如何关闭所有 tomcat 日志轮换

如何关闭所有 tomcat 日志轮换

我想使用 logrotate 管理服务器上的日志轮换,但是 Tomcat 会执行自己的日志轮换,与 logrotate 交互不良,我找不到关闭它的方法。我的 Tomcat 实例目前生成 5 种类型的日志:

  • catalina.2018-01-17.log
  • mysite_access.2018-01-17.log
  • 本地主机.2018-01-17.log
  • 主机管理器.2018-01-17.log
  • manager.2018-01-17.log

经过一番谷歌搜索,我发现我可以通过添加rotatable="false"到 server.xml 中的相应<Value>元素来禁用“mysite”日志的轮换,但其他日志都没有相应的<Value>元素。

日志似乎是由logging.properties文件配置的,但我找不到此文件的“关闭轮换”选项。有人能帮忙吗?我使用的是Tomcat 8.5

答案1

你可能在 tomcat 实例中使用 JULI 日志记录作为默认设置。试试这个

1catalina.org.apache.juli.FileHandler.rotatable = false

在logging.properties中。

如果您搜索该属性,网上会有一些示例。

如果您不使用这些日志进行任何操作,您可以删除或重命名logging.properties文件以停止使用JULI日志记录。

答案2

我认为你的观点是错误的。 本质上没有什么新颖之处logrotate,事实上,它通常是从cron每天一次,这可能导致有趣的情况,你不知道为什么你的logrotate指示不起作用

最好的方法可能是保留默认设置tomcat按原样(事实上,例如,这对于各种备份目的更加友好),并使用使用文件修改时间执行旋转的简单脚本进行旋转(例如,find /var/tomcat/logs/ -mtime +5 -name "*.log" -exec echo rm {} \;删除echo真实内容)。

相关问题,您还可以配置上述findlastaction/endscript指令中的代码片段logrotate,或者更好的是,将其直接放入其中cron以便在您自己的时间运行。

其他参考:

答案3

只需将日志发送到 syslog,然后使用 syslog 写入日志文件,然后根据需要旋转。

相关内容