使用 log4j 记录日志,每天0点进行分隔,由于日志文件较大,为节省空间,需要将历史文件自动压缩。需要使用 Apache Extras™ for Apache log4j™ 的 org.apache.log4j.rolling.TimeBasedRollingPolicy 类进行配置。配置如下:
参考资料
[1] Apache Extras™ for Apache log4j™. http://logging.apache.org/log4j/extras/
[2] Class TimeBasedRollingPolicy. http://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
[3] Compress Log4j files. http://stackoverflow.com/questions/3329385/compress-log4j-files
[4] Configuring RollingFileAppender in log4j. http://stackoverflow.com/questions/5117758/configuring-rollingfileappender-in-log4j
[5] TimeBasedRollingPolicy. http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy
[6] Class TimeBasedRollingPolicy<E>. http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.html
[7] slf4j+logback使用. http://blog.youkuaiyun.com/longaohun/article/details/6782046
[8] logback输出多个日志文件. http://blog.youkuaiyun.com/kimsoft/article/details/7618421
<?xml version="1.0" encoding="windows-1252"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<!-- Daily Rolling File Appender that compresses old files -->
<appender name="file" class="org.apache.log4j.rolling.RollingFileAppender" >
<param name="threshold" value="info"/>
<rollingPolicy name="file"
class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern"
value="${catalina.base}/logs/myapp.log.%d{yyyy-MM-dd}.gz"/>
<param name="ActiveFileName" value="${catalina.base}/logs/myapp.log"/>
</rollingPolicy>
<layout class="org.apache.log4j.EnhancedPatternLayout" >
<param name="ConversionPattern"
value="%d{ISO8601} %-5p - %-26.26c{1} - %m%n" />
</layout>
</appender>
<root>
<priority value="debug"></priority>
<appender-ref ref="file" />
</root>
</log4j:configuration>
另外 logback 有许多优点,用它来实现压缩的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder
by default -->
<encoder>
<pattern>%d [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- Daily Rolling File Appender that compresses old files -->
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/app.log</file>
<rollingPolicy name="file"
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/app.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%p [%t] %d %c: %m%n</pattern>
</encoder>
</appender>
<logger name="com.app" level="INFO" />
<root level="WARN">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</configuration>
参考资料
[1] Apache Extras™ for Apache log4j™. http://logging.apache.org/log4j/extras/
[2] Class TimeBasedRollingPolicy. http://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html
[3] Compress Log4j files. http://stackoverflow.com/questions/3329385/compress-log4j-files
[4] Configuring RollingFileAppender in log4j. http://stackoverflow.com/questions/5117758/configuring-rollingfileappender-in-log4j
[5] TimeBasedRollingPolicy. http://logback.qos.ch/manual/appenders.html#TimeBasedRollingPolicy
[6] Class TimeBasedRollingPolicy<E>. http://logback.qos.ch/apidocs/ch/qos/logback/core/rolling/TimeBasedRollingPolicy.html
[7] slf4j+logback使用. http://blog.youkuaiyun.com/longaohun/article/details/6782046
[8] logback输出多个日志文件. http://blog.youkuaiyun.com/kimsoft/article/details/7618421