我想为我的 Tomcat 服务器的 catalina.out 日志文件设置每日 logrotate,但它不起作用 - 我还没有看到创建的旋转日志文件。
为了排除故障,我运行logrotate -d /etc/logrotate.conf
并得到以下信息:
rotating pattern: /usr/local/tomcat/logs/catalina.out 5242880 bytes (7 rotations)
empty log files are rotated, old logs are removed
considering log /usr/local/tomcat/logs/catalina.out
log needs rotating
rotating log /usr/local/tomcat/logs/catalina.out, log->rotateCount is 7
dateext suffix '-20151223'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /usr/local/tomcat/logs/catalina.out to /usr/local/tomcat/logs/catalina.out-20151223
truncating /usr/local/tomcat/logs/catalina.out
compressing log with: /bin/gzip
Run Code Online (Sandbox Code Playgroud)
似乎一切正常,没有任何错误。但是,没有结果:
[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata*
-rw-r--r-- 1 root root 398 Dec 4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log
-rw-r--r-- 1 root root 109M Dec 23 17:21 /usr/local/tomcat/logs/catalina.out
Run Code Online (Sandbox Code Playgroud)
我的/etc/logrotate.conf
:
daily
rotate 7
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
Run Code Online (Sandbox Code Playgroud)
我的/etc/logrotate.d/tomcat
:
/usr/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 7
compress
missingok
size 5M
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
有趣的是,运行logrotate -f /etc/logrotate.conf
会创建旋转 gzip 文件!
[root@gec logrotate.d]# ls -lrth /usr/local/tomcat/logs/cata*
-rw-r--r-- 1 root root 398 Dec 4 17:48 /usr/local/tomcat/logs/catalina.2015-12-04.log
-rw-r--r-- 1 root root 1.1M Dec 23 17:26 /usr/local/tomcat/logs/catalina.out-20151223.gz
-rw-r--r-- 1 root root 109K Dec 23 17:27 /usr/local/tomcat/logs/catalina.out
Run Code Online (Sandbox Code Playgroud)
但是,我怎么知道每天的 cron 工作是否有效?
您正在运行logrotate -d /etc/logrotate.conf
使用-d
的参数。
该-d
参数是调试模式,你可以说这种“干运行”。如果 logrotate 可以工作但不会旋转日志,它只会为您提供信息。
在logrotate -f
由于工作-f
参数指定的logrotate迫使logrotate的。
引用logrotate手册:
-d, --debug
打开调试模式并暗示 -v。在调试模式下,不会对日志或 logrotate 状态文件进行任何更改。
-f, --force 告诉 logrotate 强制旋转,即使它认为没有必要。有时这在向
logrotate 配置文件添加新条目后很有用,或者如果
手动删除旧日志文件,因为将创建新文件,并且日志记录
将继续正确。
如果logrotate -d /etc/logrotate.conf
给你的输出是日志将被旋转和压缩,那么当 logrotate 将通过你的配置文件时,它肯定会旋转它。