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
.
Advertisement
Answer
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>