次の新しいlogrotate構成があります。
/var/log/nexus/nexus.log {
rotate 7
missingok
compress
delaycompress
copytruncate
daily
}
私が実行すると、logrotate -d nexus
次のようになります。
reading config file nexus
reading config info for /var/log/nexus/nexus.log
Handling 1 logs
rotating pattern: /var/log/nexus/nexus.log after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
log does not need rotating
私の/var/log/nexus/フォルダには次の内容が含まれています。
nexus.log
oldlogs.tar.gz
LogRotateがnexus.logファイルを回転しないのはなぜですか?私が期待しているのは、nexus.logファイルが切り捨てられ、新しいファイル(例:nexus.log-201106241000)が生成されることです。
答え1
ほとんどの場合、ログファイルは1日が経過していないか、最後の日に回転しており、logrotateは履歴を覚えています。
追加すると、-f
本当に必要に応じて回転が強制されます(しかし、それがどのようにやり取りするのか100%確信できません-d
)。
履歴が表示され、場所はディストリビューションによって異なりますが、おそらく/var/lib/logrotate/status
。このファイルには、ログが最後に循環された時刻が表示されます。
答え2
新しいログ構成で初めてlogrotateを実行すると、最後のログ回転がいつ発生したのかわからないため、/var/lib/logrotate/status
今日実行されたことを示すステータス行のみを作成します。
翌日実行すると、ログは1日が経過したことを確認し、期待どおりに回転します。待たないようにするには、logrotateのステータスファイルを編集し、ログのステータス日付を前日に復元します。
logrotateを手動で実行すると、期待どおりに機能します。
答え3
dateext
時にはlogrotateを手動で実行しても同じ日に実行し、デフォルト値に秒が含まれていない場合は-%Y%m%d
機能しません(例:)。 logrotateのステータスファイルを変更したり、サイズディレクティブ(たとえば)を使用したりする場合もsize 200M
同様です。少なくともCentOS 6では、logrotateはログファイルがすでに存在するため回転できません。
この問題を解決するには、次の値で代わりにdateformat
使用する必要があります。dateext
%Y%m%d%s
詳細についてはを参照してくださいman logrotate
。
答え4
参考として実行すると
logrotate -vdf /etc/logrotate.conf
イベントをシミュレートするだけですが、イベントが記録され、その後の/var/lib/logrotate.status
logrotateの実行が上記の内容に応答します。
log does not need rotating