即使我可以手动调用logrotate,它也每天尝试自动使用logrotate旋转tomcat的catalina.out。我正在使用我尝试过的所有解决方案,但是我无法使其旋转。我使用的是基本上是RHEL 7的Oracle Linux 7.5。
这是我已采取的步骤:
我创建了一个/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以来没有旋转,但是它仍然没有旋转。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
由于这获得了很多见解,所以我会让大家知道我找到的解决方案。
我无法使用logrotate在catalina.out上工作,如果您正在寻找它,请对不起。
我能做的是阻止catalina.out生成。为此,我在apache-tomee-plus-7.0.4 / bin中创建了一个名为setenv.sh的文件,并将此行放入其中
export CATALINA_OUT="/dev/null"
tomee启动时,在catalina.sh中看起来像这样
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-classpath "\"$CLASSPATH\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
因此输出到文件似乎是在后台运行此tomee的必要条件。输出到/ dev / null可以将其输出到某个地方,但是却无处可寻
答案 1 :(得分:1)
这是一个旧案例,但是我觉得我应该添加我的解决方案,因为它确实旋转了日志,这是原来的问题。
就我而言,我设置/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
长进天上这是我的主要目标,并且我怀疑原来的问题...
答案 2 :(得分:0)
从logrotate.status的输出中,很明显 catalina.out 不受logrotate的控制。
在文件 /etc/logrotate.conf 中,请检查该行
include /etc/logrotate.d
如果此行不存在,请添加它。 仅当存在此行时,才会考虑在/etc/logrotate.d中添加的配置。