2011-01-05 62 views
5

是否log4j的1.2提供任何机制来每天的归档日志?log4j是否提供任何机制来日常归档日志?

大家说,我可以通过org.apache.log4j.rolling.TimeBasedRollingPolicy做,但在1.2.15的来源我没有看到任何TimeBasedRollingPolicy类。

我找到解决方法:使用DailyRollingFileAppender

<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/> 

    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
     <param name="ActiveFileName" value="${jboss.server.log.dir}/server.log"/> 
     <!-- roll log file once a day --> 
     <param name="FileNamePattern" value="${jboss.server.log.dir}/archives/server.log.%d.gz"/> 
    </rollingPolicy> 

    <!-- A PatternLayout that limits the number of lines in stack traces --> 
    <layout class="com.mtvi.log4j.StackTraceLimitingPatternLayout"> 
     <!-- The full pattern: Date MS Priority [Category] (Thread) Message\n --> 
     <param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/> 
    </layout> 
</appender> 
+0

@ user253202嗨,如果您使用apache-log4j-extras发现了您的请求的解决方案,请将其与其他人共享。将其标记为您自己的答案。 – jbx 2011-01-09 22:06:32

回答

3

什么你问可以做到的。

+1

是的,但它不允许我将滚动日志放到特定文件夹。我发现了一个解决方案 - apache-log4j-extras – user253202 2011-01-06 10:23:13

4

您需要将您的appender定义为DailyRollingFileAppender,并将日期格式定义为每日粒度。以下是一个名为'file'的示例appender,它将输出到application.log,并通过将日期附加到午夜后的结尾并开始新文件来每日滚动文件。

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=application.log 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d %5p [%t] - %m%n 

然后,您将需要定义您的记录仪(或rootLogger)输出到这个附加目的地。例如:

log4j.rootLogger=debug, file 
+1

好的,以及如何使它不滚动文件到原始文件相同的文件夹,但其他任何定义的文件夹? – user253202 2011-01-06 09:47:51