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

log4j:使用TimeBasedRollingPolicy使用DailRollingFileAppender将日志滚动到.gz文件中,log4j,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.l

当前系统按预期工作,日志文件按照以下逻辑每小时滚动一次:

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
我可以理解,通过使用TimeBasedRollingPolicy的RollingFileAppender(根据文件大小滚动),可以将日志文件直接滚动到压缩文件(.gz或.zip)中。我正在使用DailRollingFileAppender(基于时间的滚动),并希望通过它实现压缩。我修改了我的属性如下。但这不起作用

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
任何指点都将不胜感激。以下是一些相关链接


请原谅我的惊讶,但在您给出的确切链接上,它在公认的答案中写道:

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


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

请尝试以下操作,它对我有效:

log4j.rootLogger=CONSOLE,file


log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE..layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.appender.file=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.file.Threshold=WARN
log4j.appender.file.Encoding=UTF-8

log4j.appender.file.File=/path to your logs/logs/log_file.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.file.RollingPolicy.FileNamePattern=/path to your                 logs/logs/log_file%d{yyyy-MM-dd-HH-mm-ss}.log
log4j.appender.file.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n

感谢您的回复。在我发布的链接中,其中一个回复说“这个问题在log4jv1.2.16中得到了修复。它现在支持通过属性文件.issues.apache.org/bugzilla/show_bug.cgi?id=36384设置rollingPolicy”。我还没有尝试过用XML重写,因为这将是一个很大的变化(需要为已经存在的多个记录器以不同的滚动间隔重写),因此我们将尝试使用属性文件本身来实现这一点。您找到解决方案了吗?我看到SameDesn不能在commons-logging-1.1.1(使用log4j.log4j:1.2.12)上工作,错误是log4j:WARN在org.apache.log4j.RollingFileAppender中没有这样的属性[rollingPolicy]。log4j:警告org.apache.log4j.RollingFileAppender中没有此类属性[datePattern]。log4j:警告org.apache.log4j.RollingFileAppender中没有此类属性[datePattern]。log4j:警告org.apache.log4j.RollingFileAppender中没有此类属性[rollingPolicy]。