ログ回転が機能しません

ログ回転が機能しません

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を試してください。

関連情報