我想使用 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
真实内容)。
每相关问题,您还可以配置上述find
lastaction
/endscript
指令中的代码片段logrotate
,或者更好的是,将其直接放入其中cron
以便在您自己的时间运行。
其他参考:
答案3
只需将日志发送到 syslog,然后使用 syslog 写入日志文件,然后根据需要旋转。