logrotate:删除超过n天的tomcat/jboss日志

dOp*_*Ops 5 linux logging logrotate log-rotation

我没有找到清除旧的tomcat或jboss日志或任何其他带时间戳的日志的解决方案:catalog.log./server.log..基本上这些日志由jboss旋转为:server.log,server.log.20131201,server.log.20131203等等.

有没有办法我可以使用logrotate删除超过n天的日志?我不想在postrotate里面使用find或调整jboss/tomcat日志属性.我只想知道logrotate是否可以实现这一点.我知道这不是很有效率,但我遇到了一个问题,我需要回答这个问题.

jau*_*ume 9

如果你不想在find里面使用postrotate,不,你不能.

logrotateserver.logTomcat/JBoss旋转的每个实例都视为一个不同的文件,由于它们是唯一的,因此logrotate只会将它们旋转一次.maxage- 删除超过n天数的旋转日志的指令- 仅在要旋转日志文件时进行检查,以便maxage仅执行一次并且无法跟踪文件的年龄.

但是,如果您改变主意使用find,logrotate可以帮助您简化Tomcat和JBoss创建的日志文件的管理.我使用它来压缩和删除旧文件,配置文件如下:

/path/to/logs/server.log.????-??-?? {
    compress
    compresscmd /usr/bin/bzip2
    nocreate
    nodateext
    ifempty
    missingok
    rotate 1
    size 0
    start 0
    lastaction
        # Remove rotated files older than 180 days
        find /path/to/logs -name 'server.log.????-??-??.0.bz2' -mtime +180 -exec rm {} \;
    endscript
}
Run Code Online (Sandbox Code Playgroud)

哪里:

  • rotate 1compress重命名和压缩,也就是说,server.log.20131201server.log.20131201.0.bz2.该0时间戳和之间.bz2延伸来自start 0.
  • size 0 确保始终重命名和压缩文件.
  • lastaction块删除超过180天的旋转文件.