logrotate の設定を行う。

シェアする

Apache で DocumentRoot を変えた際にログの出力先も一緒に変更していたのだけど、デフォルト(/var/log/apache2)から変更すると logrotate が動いてくれない!ということで調べてみたら、 logrotate は自分で設定しなければならないとの事。

Ubuntu11.10 の場合、 logrotate の設定は以下のファイル及びディレクトリ以下にある。

/etc/logrotate.conf
/etc/logrotate.d/

logrotate.conf から /etc/logrotate.d/ 以下のファイルを読み込む様にしてある。

/etc/logrotate.d/apache2 というファイルがあったので、ここに設定を追加してやる。

$ sudo vim /etc/logrotate.d/apache2
# 以下を追加
/home/www/logs/*.log {
        weekly
        missingok
        rotate 5
        compress
        delaycompress
        notifempty
        create 640 root adm
        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
}

基本的にデフォルトの値をそのまま使っている、はず。

一応オプションは man で調べてみた。上記設定で使ってるもの+ぱっと目に入ったものだけ。

compress
古いログはgzipで圧縮する。
compresscmd
圧縮する際のコマンドを指定する。デフォルトは gzip
uncompresscmd
圧縮されたログを解凍する際のコマンドを指定する。デフォルトは gunzip
nocompress
古いログを圧縮しない。
rotate count
ログファイルを何個作成するか。count以上ログが大きくなる時は古いログが削除される。
minsize size
指定されたサイズよりログファイルが大きくなればローテートする。
ifempty
ログが空でもローテートする。(デフォルト)
notifempty
ログが空ならローテートしない。
olddir directory
ログを指定されたディレクトリへ移動する。
daily
日単位でローテートする。
monthly
月単位でローテートする。
weekly
週単位でローテートする。
yearly
年単位でローテートする。
prerotate - endscript
ログファイルをローテートする前に指定されたスクリプトを実行する
postrotate - endscript
ログファイルをローテートした後に指定されたスクリプトを実行する
sharedscripts
prerotate等でスクリプトが指定された場合にスクリプトが実行する回数を一回に抑える。
create mode owner group
ローテーションをした直後にログファイルを指定の owner group mode で作成する。
nocreate
ローテーションをした直後にログファイルを作成しない。
Sponsored Link

シェアする

フォローする

コメント

  1. 匿名 より:

    >daly
    >日単位でローテートする。

    daily では?