Tomcatサーバーのcatalina.outログファイルに対して毎日のログローテーションを設定しようとしましたが、機能しません。ローテーションされたログファイルが生成されるのを見ませんでした。
問題を解決するために走った。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
すべてが大丈夫に見え、エラーもありません。しかし、結果はありません。
[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
私のもの/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
私のもの/etc/logrotate.d/tomcat
:
/usr/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 7
compress
missingok
size 5M
}
何が問題なの?
修正する:
興味深いことに走っている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
しかし、毎日のクローン作業が機能しているかどうかはどうすればわかりますか?
答え1
logrotate -d /etc/logrotate.conf
引数を使用して実行します-d
。
パラメータ-d
はデバッグモード、つまり「模擬実行」と言うことができます。ログの回転が有効な場合にのみ情報を提供しますが、ログを回転しません。
logrotate -f
-f
これは、パラメータがlogrotateを強制するためにlogrotateを指定するために機能します。
マニュアルから引用ログの回転:
-d、--debug
デバッグモードをオンにし、-v を暗示します。デバッグモードでは、ログまたはlogrotateステータスファイルは変更されません。
-f, --force は、これが必要ではないと思っても強制的に回転するようにログロテートに指示します。これは
、logrotate構成ファイルに新しいエントリを追加した後、または古いログファイルを手動で削除した場合に
新しいファイルが作成され、ログが
正しく続行されるために便利です。
logrotate -d /etc/logrotate.conf
提供された出力でログが回転して圧縮されることを示す場合、logrotateは設定ファイルを繰り返すとログを確実に回転させます。
答え2
この質問に重複していることが知られている別の質問がありますが、実際には非常に異なる答えがあります。
この質問に対する答えは、Tomcatがユーザー「root」として実行されている場合にのみ機能します。これはセキュリティが悪い慣行です。ベストプラクティスとして、Tomcatがユーザーtomcat:tomcatとして実行されている場合、catalina.outファイルもtomcat:tomcatの所有になります。この場合、logrotateはcatalina.outを回転しません。
この問題を解決するには、logrotate 構成でユーザー名とグループ名を指定する必要があります。したがって、この場合、/etc/logrotate.d/tomcatを次のように変更する必要があります。
/usr/local/tomcat/logs/catalina.out {
su tomcat tomcat
copytruncate
daily
rotate 7
compress
missingok
size 5M
}
答え3
/etc/logrotate.d/tomcatでinformemptyを試してください。