如何使用 logrotate 压缩和清理日志但不旋转它们

Gui*_*ume 10 tomcat logrotate

我有一个 Tomcat 服务器,它通过阀门(org.apache.catalina.valves.FastCommonAccessLogValve)创建访问日志。该阀负责轮换访问日志文件,但不会在一段时间后压缩或删除它们。

目前,我有一个find [...] -mtime +30 [...]用于压缩和删除日志的 cron 作业。我宁愿使用 logrotate,以便日志轮换位于所有日志的集中位置。我不喜欢只针对 Tomcat 的单独解决方案。

我试图阅读 logrotate 文档,但我仍然有点迷茫。我可以使用 logrotate 来压缩和清理日志文件吗?我该怎么做?

或者扭转问题,是否有 Tomcat 访问日志阀可以压缩和清理日志文件?

感谢您的帮助 !

Dec*_*ado 18

我见过的相当简单的工作是这样的。

在 /etc/logrotate.d 中创建一个名为 tomcat 的文件,其中包含以下内容:-

/var/log/tomcat/catalina.out { 
  copytruncate 
  daily 
  rotate 7 
  compress 
  missingok 
}
Run Code Online (Sandbox Code Playgroud)

每天运行,压缩文件,并保持 7 天的价值(轮换 7)。copytruncate意味着它会复制然后截断原始文件,这样就不需要重新启动tomcat。如果不存在,则缺少 ok不会出错。

可以通过添加 rotatable=false 将 access.log Valve 更改为不旋转:-

<Valve className="org.apache.catalina.valves.AccessLogValve
     ...
     ...
     suffix="log" rotatable="false" />
Run Code Online (Sandbox Code Playgroud)

  • 好的,可以通过在 Valve 参数中设置 rotatable=false 来禁用访问日志轮换。Answeraltered 包括这个。 (3认同)