我正在尝试每天使用logrotate自动将tomcat的catalina.out旋转出,即使我可以手动调用logrotate并且它也可以正常工作。我使用的是我尝试过的所有解决方案,但无法旋转它。我使用的是Oracle Linux 7.5(基本上是RHEL 7)。

这是我已采取的步骤:

我创建了一个文件/etc/logrotate.d/tomee.conf,如下所示:

    /apache-tomee-plus-7.0.4/logs/catalina.out
    {
        su opc opc
        daily
        rotate 7
        compress
        notifempty
        missingok
        copytruncate
    }

我可以手动执行logrotate,使用sudo /usr/sbin/logrotate /etc/logrotate.conf可以正常工作

我也尝试使用sudo /usr/sbin/logrotate -d /etc/logrotate.conf进行调试,并且输出没有错误
    ...
    rotating pattern: /apache-tomee-plus-7.0.4/logs/catalina.out
     after 1 days (7 rotations)
    empty log files are not rotated, old logs are removed
    switching euid to 1000 and egid to 1000
    considering log /apache-tomee-plus-7.0.4/logs/catalina.out
      log needs rotating
    rotating log /apache-tomee-plus-7.0.4/logs/catalina.out, log->rotateCount is 7
    dateext suffix '-20181211'
    glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    copying /apache-tomee-plus-7.0.4/logs/catalina.out to /apache-tomee-plus-7.0.4/logs/catalina.out-20181211
    truncating /apache-tomee-plus-7.0.4/logs/catalina.out
    compressing log with: /bin/gzip
    switching euid to 0 and egid to 0
    ...

但是它仍然不能每天自动执行。

我也知道logrotate正在运行,因为根据/var/lib/logrotate/logrotate.status,其他日志正在旋转,但catalina.out不在
    cat /var/lib/logrotate/logrotate.status
    logrotate state -- version 2
    "/var/log/yum.log" 2018-11-29-18:44:14
    "/var/log/up2date" 2018-9-17-19:0:0
    "/apache-tomee-plus-7.0.4/logs/catalina.out" 2018-12-8-0:37:14
    "/var/log/chrony/*.log" 2018-9-17-19:0:0
    "/var/log/wtmp" 2018-12-3-17:48:49
    "/var/log/spooler" 2018-11-29-18:44:14
    "/var/log/btmp" 2018-12-3-17:48:49
    "/var/log/iscsiuio.log" 2018-9-17-19:0:0
    "/var/log/maillog" 2018-12-11-3:7:1
    "/var/log/secure" 2018-12-11-3:7:1
    "/var/log/messages" 2018-12-11-3:7:1
    "/var/account/pacct" 2018-9-17-19:0:0
    "/var/log/cron" 2018-12-11-3:7:1

请注意,有多个条目说它是在12-11上旋转的,但是catalina.out从12-8开始没有旋转,但是它仍然没有旋转。

任何帮助是极大的赞赏。谢谢。

最佳答案

我看到这是一个旧案例,但是我觉得应该添加我的解决方案,因为它确实旋转了日志,这是原来的问题。

就我而言,我设置/etc/logrotate.d/tomcat文件的方式与最初问题中贾斯汀的方式大致相同:

/<apache-location>/tomcat/logs/catalina.out {
  daily
  copytruncate
  rotate 180
  compress
  missingok
  maxsize 200M
}

(我的apache位置很奇怪,请适当替换。rotate 180将我的日志保留约30天,如果我的数学距离不太远(24h * 30天= 720h->如果每4小时旋转一次,则得出720/4 = 180次->保留180个日志文件。)

但我从正常的cronjob触发执行,如下所示:
0 */4 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /var/log/cut.log 2>&1

要每天轮换,只需将Cronjob的第一部分调整为例如0 0 * * *(每天午夜)。

-vf选项用于打开详细信息(用于记录cron)并强制执行旋转。/var/log/cut.log是我专门为记录cron作业而添加的文件。当然可以删除>> /var/log/cut.log 2>&1

我正在以root用户身份运行旋转/定时作业。

在最初遇到很多麻烦之后,这似乎在我的系统上起作用。不确定这是否是理想的解决方案,但至少我避免了catalina.out升入天堂,这是我的主要目标,而且我怀疑这个目标还有最初的问题...

关于tomcat - logrotate不会旋转catalina.out,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53729722/

10-12 14:28