注:私はApache2(Linux上)を使用していますが、これを一般的に達成するための「最良の」方法も知りたいので、一般的な意味で(Linuxのみ)質問しました(私はNginxまたはCherokeeに大規模なサイトをデプロイしようとしています。
私のログファイルはほんの数週間で巨大になりつつあります。一時的に保管しておく必要がありますが、2週間程度前のエントリは削除したいのですが。これは可能ですか、どうすればよいですか?
Logrotateを使用できます。特定のサービスの構成ファイルに従ってログをローテーションします。通常、cronによって毎日実行されます。
/etc/logrotate.d/Apache2
にあるApacheの設定ファイルの例
/var/log/Apache2/*_log {
daily
rotate 31
missingok
compress
delaycompress
sharedscripts
postrotate
if [ -f "`. /etc/Apache2/envvars ; echo ${Apache_PID_FILE:-/var/run/Apache2.pid}`" ]; then
/etc/init.d/Apache2 reload > /dev/null
fi
endscript
}
これは:
プロセスを再読み込みしたくない場合は、copytruncate
を使用する必要があります。これにより、現在のコンテンツが新しいファイルにコピーされ、圧縮されてから、現在のログファイルが切り捨てられます。この場合、sharedscripts
、postrotate
、およびendscript
は必要ありません。
ログを処理するための標準的なツールはlogrotateです。