我正在尝试使用日志旋转,以自动旋转出tomcat的catalina.out每天,即使我可以手动调用日志旋转,它工作得很好。我用了,我已经试过了所有的解决方案,但是我不能让它旋转。我使用的是Oracle Linux7.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
}我可以手动执行日志旋转,并且使用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
...但它仍然不能每天自动完成。
我还知道日志正在运行,因为根据/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开始就没有旋转,但是它仍然不是旋转的。
任何帮助都是非常感谢的。谢谢。
发布于 2019-08-14 22:30:18
因为这得到了很多的意见,我会让大家知道我找到的解决方案。
我无法在catalina.out上工作,所以很抱歉,如果这就是你要找的。
我所能做的就是阻止catalina.out的生成。为此,我在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可以让它在某个地方输出,但它只是没有结果
发布于 2020-03-11 14:34:46
这是一个旧的例子,我看到了,但我觉得我应该添加我的解决方案,因为它确实旋转日志,这是最初的问题。
在我的例子中,我设置/etc/logrotate.d/tomcat文件的方式与Justin在最初问题中所做的大致相同:
/<apache-location>/tomcat/logs/catalina.out {
daily
copytruncate
rotate 180
compress
missingok
maxsize 200M
}(我的apache位置很奇怪,所以请酌情替换。rotate 180保存我的日志大约30天,如果我的数学不算太远(24小时* 30天= 720小时->如果每4小时旋转一次,则产生720/4= 180次->保存180个日志文件)。
但是,我从一个正常的cron作业触发执行,就这样:
0 */4 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /var/log/cut.log 2>&1要想每天轮转,只需将任务的第一部分调整为0 0 * * * (每天午夜)。
-vf选项是打开详细(用于记录cron)并强制执行旋转。/var/log/cut.log是我专门为cron作业的日志记录而添加的文件。当然,>> /var/log/cut.log 2>&1是可以放弃的。
我作为根用户运行旋转/cron作业。
这似乎适用于我的系统,在最初经历了很多麻烦之后。不确定这是否是理想的解决方案,但至少我避免了catalina.out增长到天堂和之上,这是我的主要目标,我也怀疑目标与最初的问题.
发布于 2021-11-20 22:21:10
使用来自Apache的rotatelogs很容易。只有set env属性:
CATALINA_OUT_CMD="/usr/sbin/rotatelogs -f $CATALINA_BASE/logs/catalina.out.%Y-%m-%d.log 86400"它将创建一个命名管道catalina.out,这样就可以在不重新启动Tomcat的情况下旋转它。
有关更多信息,请参见catalina.sh文件。
https://stackoverflow.com/questions/53729722
复制相似问题