soogle’s diary

soogle life log

apacheのログのローてートについて


ログはそのままにしておくと、どんどん大きくなってしまう。
そのためログを一定期間で世代分け(ローテート)させることにします。
世代分けを行うのがlogrotate 。
定期的に logrotate を実行するために cron と組み合わせます。
logrotate の設定は /etc/logrotate.conf で行う。

example

/etc/logrotate.conf の中身は以下の感じ

# 詳しくは "man logrotate"

# グローバルな設定
# ローテートの間隔(monthly,weekly,daily)
daily

# 何世代まで保存するか
rotate 7

# エラーがあれば root 宛てにメールする
errors root

# ローテート処理後すぐに同名のログファイルを作成する
create

# ログファイルを圧縮(する:compress しない:nocompress)
#compress

# logrotateの設定ファイルの位置
include /etc/logrotate.d

# /var/log/wtmp をローテートする設定
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}


Apache ログの設定ファイル(/etc/logrotate.d/apache)の中身は

/var/log/httpd/axs_log {
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}
/var/log/httpd/error_log {
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

/var/log/httpd/axs_log はローテートさせるログの場所を指します。
postrotate はローテート後にコマンドを行うということを示しており、次の行の
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true