Logrotate Tomcat 日志文件

Logrotate Tomcat 日志文件

我正在使用以下设置编写 Tomcat 日志:

  • AccessLogValve使用in配置日志server.xml

    Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/access"
    prefix="access" suffix=".log" pattern="common" rotatable="false"
    
  • 用于logrotate每天轮换日志文件并删除旧的日志文件。

    /app/logs/access/access.log {
        daily
        dateext
        missingok
        rotate 14
        maxage 14
        compress
        delaycompress
        dateyesterday }
    

奇怪的是,每天都会用 更改日志文件的名称logrotate,例如,并创建access.log-20171222一个新的日志文件。但是,Tomcat 仍然会将日志写入重命名的文件。access.log

我现在的解决方案是将选项添加copytruncatelogrotate.但是,使用此选项,截断时可能会丢失一些日志。

谁能提出更好的解决方案?

谢谢。

答案1

根据文档中,您应该将可旋转选项保留为 true (默认),以便它不会始终写入同一个文件。您还可以将文件名字符串格式化为固定值,这样您就不会在其中获取日期。只要确保在内部轮转之前运行 logrotate ,这样新日志就不会面临覆盖最后一个日志的风险(因为它被重命名)。

相关内容