日志文件自动压缩

使用 log4j 记录日志,每天0点进行分隔,由于日志文件较大,为节省空间,需要将历史文件自动压缩。需要使用 Apache Extras™ for Apache log4j™  的 org.apache.log4j.rolling.TimeBasedRollingPolicy 类进行配置。配置如下:
<?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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值