我无法正确配置Log4j。我期待Log4j在午夜时将我的catalina.out文件旋转,如下所示进行配置。
的 log4j.properties:
log4j.rootLogger=INFO, CATALINA
# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=/var/log/tomcat7/catalina.out
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd-HH-mm'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern =%d{HH:mm:ss} %5p [%t] - %m%n
配置后我重新启动了Tomcat和 一切都写到:
/var/log/tomcat7/catalina.out
为了测试我的配置,我将当前日期时间更改为23:59:59:
#ls -l /var/log/tomcat7/
-rw-r--r-- 1 tomcat7 tomcat7 5840 4. May 00:00 catalina.out
如你所见,它在午夜没有旋转......(?)
重新启动Tomcat时,它可以正常工作:
#ls -l /var/log/tomcat7/
-rw-r--r-- 1 tomcat7 tomcat7 5840 4. May 13:37 catalina.out
-rw-r--r-- 1 tomcat7 root 2395 4. May 00:00 catalina.out.*CURRENTDATE*.log
甚至可以在不重启Tomcat的情况下旋转我的日志文件吗?
提前致谢, 马利
答案 0 :(得分:9)
此问题有三种解决方案:
解决方案的好处:
缺点:
仅提供带日期的简单备份。无法设置日期模式。不压缩旋转的文件。
您也可以组合解决方案。例如,使用crontab通过将catalina.out更改为其他名称来创建gzip文件。 我还建议离开tomcat,以便记录到catalina.out,并使用log4j将应用程序配置到不同的文件。这种来自tomcat的非易失性日志不会垃圾邮件。
答案 1 :(得分:1)
甚至可以在不重启Tomcat的情况下旋转我的日志文件吗?
是的,如果你愿意为它工作。
你的log4j配置只会与bin / catalina.sh用于将stdout重定向到logs / catalina.out的标准shell重定向结束。您不能简单地使用log4j配置来更改System.out的行为方式。
如果你想旋转conf / catalina.out,你将不得不采取一些替代措施,具体取决于如何启动Tomcat: