私はlogrotateを使用してApacheアクセスログ、エラーログを回転させ、ログを書き換えます。私の設定ファイルは次のとおりです。
/apache/*log {
compress
dateext
rotate 365
size=+300M
olddir /log/old/apache
notifempty
missingok
lastaction
/bin/apache reload
endscript
}
私の問題は、回転が発生するたびにApacheが回転したログファイルに何も書き込まないため、Apacheを再ロードする必要があることです。 logrotateが回転するたびにApacheが再ロードされるのを防ぐ方法はありますか?
ベストアンサー1
Apacheが再ロードする必要があるのは、ファイルを開くとファイルハンドルを取得し、そのファイルハンドルに書き込みを続けるためです。ファイルを移動すると、この内容は表示されず、同じハンドルに記録され続けます。再ロードすると、ファイルが再び開き、新しいハンドルが作成されます。
再ロードしたくない場合は、ファイルを移動するのではなくファイルをコピーして古いファイルを消去できます。このようにして、Apacheは同じファイルハンドルに書き続けることができます。次のようにlogrotate構成ファイルに「copytruncate」オプションを追加するだけです。
/apache/*log {
copytruncate
compress
dateext
rotate 365
size=+300M
olddir /log/old/apache
notifempty
missingok
}