私のカスタムログでは、logrotateが期待どおりに機能しません。

私のカスタムログでは、logrotateが期待どおりに機能しません。

mysqlの一般ログを開いてみましたが、すごく早く成長しているようで毎日logrotateを使うかと思って昨日午後2時頃にログを生成しましたがログはこうです。

-rw-rw----  1 mysql adm  1751348 Jun 16 11:55 general.log

次のようにlogrotateに新しいルールを追加しました。

/var/log/mysql/general.log {
daily
rotate 12
dateext
compress
missingok
notifempty
create 640 mysql adm
postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

/etc/crontabによると、午前6時25分に実行中でしたが、昨日は私のログを回転させませんでした。

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

logrotate --dry-run 実行結果:

logrotate -d general
reading config file general
reading config info for /var/log/mysql/general.log 

Handling 1 logs

rotating pattern: /var/log/mysql/general.log  after 1 days (12 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/mysql/general.log
  log does not need rotating
not running postrotate script, since no logs were rotated

ログを交換するにはどうすればよいですか?

ベストアンサー1

ログの回転は1日に数回、1時間に1回開始する必要があります。実際にログを回転させるかどうかについての決定logrotatecron

24時間ごとに呼び出されると、logrotate次のことが発生する可能性があります。

  • cronログ循環ジョブの開始X(一度)。
  • logrotate開始して回転するログのリストを見て、次に終了します。X+NN数秒後)。

24時間後:

  • cronログ循環ジョブの開始はいX+24時間)。
  • logrotate、秒に興味がある場合は、最後のログ回転で回転したログが完全に24時間を超えていないことがわかります(1〜N秒差)スキップしてください。

おすすめ記事