log4j:使用TimeBasedRollingPolicy使用DailyRollingFileAppender将日志滚动到.gz文件

use*_*n87 10 log4j

当前系统按预期工作,日志文件按小时滚动一次,具体如下:

log4j.appender.oozie=org.apache.log4j.DailyRollingFileAppender
log4j.appender.oozie.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.oozie.File=${oozie.log.dir}/oozie.log
log4j.appender.oozie.Append=true
log4j.appender.oozie.layout=org.apache.log4j.PatternLayout
log4j.appender.oozie.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)

我可以理解,使用TimeBasedRollingPolicy可以使用RollingFileAppender(基于文件大小滚动)将日志文件直接滚动到压缩文件(.gz或.zip)中.我正在使用DailyRollingFileAppender(基于时间的滚动)并希望用它实现压缩.我按如下方式修改了我的属性.但那不起作用.

log4j.appender.oozie=org.apache.log4j.DailyRollingFileAppender
log4j.appender.oozie.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.oozie.File=${oozie.log.dir}/oozie.log
log4j.appender.oozie.Append=true
log4j.appender.oozie.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.oozie.RollingPolicy.FileNamePattern=foo.%d{yyyy-MM-dd-HH}.gz
log4j.appender.oozie.layout=org.apache.log4j.PatternLayout
log4j.appender.oozie.layout.ConversionPattern=%d{ISO8601} %5p %c{1}:%L - %m%n
Run Code Online (Sandbox Code Playgroud)

任何指针都将受到高度赞赏.以下是一些相关链接.

在log4j中配置RollingFileAppender

http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html

MaD*_*aDa 3

请原谅我的惊讶,但在您上面给出的确切链接中,它在接受的答案中说:

注意TimeBasedRollingPolicy只能用xml配置,不能用log4j.properties配置

您是否尝试过将配置重写为 XML 格式?

  • 感谢您的回复..在我发布的链接中,其中一个回复说“此问题已在 log4j v1.2.16 中修复。它现在支持通过属性文件设置rollingPolicy。issues.apache.org/bugzilla/show_bug.cgi ?id=36384”。我还没有尝试用 XML 重写,因为这将是一个很大的变化(需要为已经存在的具有不同滚动间隔的多个记录器重写),因此我们将尝试使用属性文件本身来实现这一点。 (2认同)