gpt4 book ai didi

java - Log4j 每天滚动 catalina.out 而不重新启动 Tomcat?

转载 作者:行者123 更新时间:2023-12-02 01:24:26 26 4
gpt4 key购买 nike

我在正确配置 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 的情况下轮换我的日志文件?

提前致谢,马利

最佳答案

此问题有以下三种解决方案:

  1. 将写入 catalina.out 的默认 tomcat 日志外观更改为:slf4j,享受使用它和 log4j 带来的所有好处。
  2. 配置系统 cron 以运行 tomcat 日志文件的 logrotate
  3. 将默认日志记录类从 ConsoleAppender 更改为 FileAppender。

解决方案的好处:

  1. 非常灵活,因为 slf4j 提供了许多选项,尤其是 log4j,您无论如何都可以使用。
  2. 简单,不需要接触 tomcat 配置。
  3. 简单更改配置即可禁用控制台输出

缺点:

  1. 需要额外的库,影响 tomcat 托管的所有应用程序,需要使用 log4j 替换默认配置。
  2. cron+logrotate 仅适用于 Linux;在带有调度程序的 Windows 中可能没那么简单。需要在 Windows 环境中编写额外的脚本。
  3. 仅提供带日期的简单备份。无法设置日期模式。不压缩旋转文件。

    描述了第一个问题的解决方案 here
    描述了第二个问题的解决方案 here
    描述了第三个问题的解决方案 here

您也可以组合解决方案。例如,使用 crontab 对通过将 catalina.out 更改为其他名称而创建的文件进行 gzip。我还建议保留 tomcat,以便它记录到 catalina.out,并使用 log4j 将应用程序配置到不同的文件。这样,来自 tomcat 的重要日志就不会向您的日志发送垃圾邮件。

关于java - Log4j 每天滚动 catalina.out 而不重新启动 Tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com