私の現在のlogrotate構成は次のようになります(logrotate 3.8.7を使用)
"/var/log/haproxy.log" {
daily
size 250M
rotate 1
create 644 root root
missingok
compress
notifempty
copytruncate
}
1日に1回は正常に実行されますが、サイズが250Mを超えると回転しません。そのため、サイズに関係なく、1日の終わりまでローテーションします。
Maxsizeオプションがあることを読みましたが、size 250M
をmaxsize 250M
に変更しても機能しません。
1時間ごとにlogrotateを実行するようにcronを設定する必要がありますか?または、がそのファイルサイズをリッスンしているためにlogrotateが自動的に実行され、何か他の問題が発生していますか?
はい、これを実現するには、logrotate
を1日に複数回実行する必要があります。これは、manページの秒の段落で答えられます logrotate
(8) :
通常、
logrotate
は毎日のcronジョブとして実行されます。ログの基準がログのサイズに基づいており、logrotate
が毎日複数回実行されている場合、または-f
または--force
オプションが使用されています。
logrotate
を毎日ではなく1時間ごとに実行したい場合は、移動できます。
mv /etc/cron.daily/logrotate /etc/cron.hourly
3.8.1以降、maxsize
が存在します。 size
とmaxsize
の違いは次のとおりです。
maxsize
サイズ追加で指定された時間間隔(
daily
、weekly
、monthly
、またはyearly
)の前であっても、サイズがバイトより大きくなると、ログファイルがローテーションされます。関連するsize
オプションは、時間間隔オプションと相互に排他的であることを除いて同様です。これにより、最後のローテーション時間に関係なくログファイルがローテーションされます。maxsize
を使用すると、ログファイルのサイズとタイムスタンプの両方が考慮されます。
これはどちらもあなたの使用に適しています:間隔なしのsize
と間隔も必要な場合はmaxsize
。ただし、これによってデフォルトでlogrotate
が毎日のみ実行されるという事実は変わりません。ほとんどの場合、ログが250M
を超えるまでに1日よりもはるかに長い時間がかかるため、この間隔はほとんどの場合に適しています。