Warm tip: This article is reproduced from serverfault.com, please click

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

(linux - logrotate: delete tomcat/jboss logs older than n days)

发布于 2014-01-09 08:30:30

我还没有找到清除旧的tomcat或jboss日志或其他带有时间戳的日志的解决方案:catalog.log。/server.log。基本上,这些日志由jboss轮换为:server.log,server.log.20131201,server.log.20131203,依此类推。

有什么方法可以使用logrotate删除早于n天的日志?我不想在postrotate或jboss / tomcat日志记录属性中使用find。我只想知道logrotate是否可以单独实现这一目标。我知道这不是很有效,但是我遇到了需要解决的问题。

Questioner
dOps
Viewed
0
jaume 2016-02-05 15:08:28

如果你不想使用findinside postrotate,不可以,你不能。

logrotateserver.log将由Tomcat / JBoss旋转的每个实例都视为一个不同的文件,并且由于它们是唯一的,因此logrotate将它们仅旋转一次。maxage-删除比n天数更旧的轮换日志的指令-仅在轮换日志文件时才检查,因此该指令maxage仅执行一次,无法跟踪文件的使用期限。

但是,如果你改变主意使用findlogrotate可以帮助你简化对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
}

在哪里:

  • rotate 1然后compress重命名并压缩server.log.20131201server.log.20131201.0.bz20时间戳和之间.bz2延伸来自start 0
  • size 0 确保始终对文件进行重命名和压缩。
  • lastaction阻止会删除180天之前的轮换文件。