【发布时间】:2019-05-12 18:33:10
【问题描述】:
我正在尝试使用 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 开始就没有轮换,但它仍然没有轮换。
非常感谢任何帮助。谢谢。
【问题讨论】:
-
您的配置中有“notifempty”。你的 catalina.out 文件不是空的吗? (如果您配置日志记录属性,该文件应该是空的。-我的意思是如果您将系统配置为将所有内容记录到正确的文件而不是写入 System.out/System.err/Console)。
-
肯定不是空的,我调试的时候可以看到,说日志需要轮换
-
您以哪个用户的身份运行 logrotate 手册? logrotate 服务作为哪个用户运行?尝试以服务运行的同一用户身份手动执行它,并将“-verbose”标志添加到命令中以获取更多详细信息!
-
我尝试以用户定义的
su opc opc运行,并且日志正确旋转
标签: tomcat apache-tomee rhel7 logrotate oraclelinux