Pregunta

Is there an appender that I can use that will get me daily rolling, compression and max files?

I can get daily rolling file with compression using apache-log4j-extras with this configuration:

<appender name="debugFileRolling" class="org.apache.log4j.rolling.RollingFileAppender">
    <!-- The active file to log to -->
    <param name="file" value="debug.log" />
    <param name="append" value="true" />
    <param name="encoding" value="UTF-8" />
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="/%d{yyyy-MM-dd}-debug.log.gz" />
    </rollingPolicy>

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %d [%t] %c: %m%n" />
    </layout>
</appender>

But I can't specify MaxBackupIndex as in org.apache.log4j.RollingFileAppender (note the slight namespace difference between the two).

I would like both without having to implement my own FileAppender, TriggeringPolicy, or RollingPolicy.

¿Fue útil?

Solución

log4j 1.2 does not have an appender that supports all features required by you. You have to use your own implementation.

log4j2 seems to support your requirements. Please have a look at the log4j2 documentation:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log"
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="20"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top