お疲れ様です。
rotatelogsでapacheのログを出力している環境でログを管理する必要があったので、忘備録として残しておきます。
背景
CustomLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/access_log.%Y%m%d%H 14400 540" combined env=!no_log ErrorLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/error_log.%Y%m%d 86400 540"
apacheに標準でついてくるrotatelogsでログが世代管理されている前提でですね、
2週間経過したログは削除、1日経過したログは圧縮するスクリプトを作ってcronに登録してみます。
スクリプトの作成
vi /usr/local/bin/apache_accesslog_compress.sh ==================================================================== #!/bin/sh #ディレクトリを移動する cd /usr/local/apache2/logs #14日経過したログを削除する find ./ -name 'access_log.*' -mtime +13 -daystart -exec rm {} \; #1日経過したログを圧縮する find ./ -name 'access_log.*' -mtime +0 -daystart -exec gzip {} \; ====================================================================
findコマンドの-daystartは
コマンドを実行した日の00:00を-mtimeの基準とするオプションです。
cronへの登録
crontab -e ======================================================= 00 04 * * * /usr/local/bin/apache_accesslog_compress.sh =======================================================