logrotate 周りのあれこれ

Apache とかのログはweekly でlogrotate させてまして、古いのは"access_log.1" "access_log.2" ... とかいうファイル名で4週間分、自動的に保存されているのですが、当然4週間よりも古いログは消えてしまうわけで、なんとかしたいなー、と。
というわけで今回は、logrotateの設定 (Kamo Land ~自宅サーバとゲームで遊ぶ~) の"mylogrotate" を頂いてきたのですが、これをこのまま"/etc/logrotate.d/" 以下に置いて以降、何故かlogrotate してくれなくなったりしまして、のろのろと原因を究明。


logrotate -f /etc/logrotate.conf

むりやりlogrotate を動かしてみたところ、


error: httpd: 1 duplicate log entry for ...

みたいなエラーメッセージが出るのでGoogle で検索、どうやらもともとのApache の設定と2重になってしまってるけど大丈夫? てな意味合いらしい。てわけで全部まとめてこんな感じに。一応動作テストしたけど、何かが間違ってるかも。
/etc/logrotate.d/httpd


/var/log/httpd/*_log {
weekly
missingok
notifempty
sharedscripts
copytruncate
postrotate
/etc/init.d/httpd reload > /dev/null
EXT=`date +%Y%m%d`
for f in $1;
do mv $f.1 $f.$EXT;
done
endscript
}

ついでに、"/etc/logrotate.conf" のログ保存期間をweekly x 13(=91日)にしてみました。プロバイダへの90日間ログ保存要請とかにあわせて、なんとなく。