« しちゅー | メイン | mod_log_sqlをインストールしてみた »

logrotateの使い方

ログをローテートしたくなった。

# portinstall logrotate
# cd /usr/local/etc
# cp logrotate.conf.sample logrotate.conf
# mkdir logrotate.d

インストール

# vim /usr/local/etc/logrotate.d/blog.perl.tv
/var/log/httpd-blog.perl.tv*.log {
    monthly      # daily, weekly, monthly から選択
    missingok
    rotate 12    # ログをローテートする回数(monthlyで12回なので、1年分)
    compress     # ログを圧縮する。しない場合は、nocompress
    delaycompress # 次のローテーションタイミングで圧縮する
    ifempty      # ファイルが空でもローテートする。しない場合はnotifempty
    create 660 root wheel
    sharedscripts
    postrotate
        killall -HUP httpd
    endscript
}

設定ファイルの内容は上記。これが全て。

# /usr/local/sbin/logrotate -d /usr/local/etc/logrotate.d/blog.perl.tv
reading config file /usr/local/etc/logrotate.d/blog.perl.tv
reading config info for /var/log/httpd-blog.perl.tv*.log 

Handling 1 logs

rotating pattern: /var/log/httpd-blog.perl.tv*.log  monthly (12 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/httpd-blog.perl.tv-access.log
  log does not need rotating
considering log /var/log/httpd-blog.perl.tv-error.log
  log does not need rotating
not running shared postrotate script, since no logs were rotated

-dでテスト。実行はされない。

# vim /var/log/logrotate.status (もしくは/var/run/logrotate.status)
logrotate state -- version 2
"/var/log/httpd-blog.perl.tv-access.log" 2009-2-11←ここの日付を変える
"/var/log/httpd-blog.perl.tv-error.log" 2009-2-11

「log does not need rotating」と言われたら、上記ファイルの日付を変更すると実行できます。初回は実行されないみたい。

/usr/local/sbin/logrotate -v /usr/local/etc/logrotate.d/blog.perl.tv

実行。「-v」は詳細表示。-vを抜いてこれをcronに入れればOK。


logrotateは、単純に古いファイルをmoveし、新しいファイルを作成し、過去ファイルを圧縮するだけの機能を持つ。ファイルの中身の日付は見てくれない。

参考
http://ameblo.jp/itboy/entry-10027962914.html
http://itbtech.itboost.co.jp/inst/inst_25.php

About

2009年02月12日 00:01に投稿されたエントリーのページです。

ひとつ前の投稿は「しちゅー」です。

次の投稿は「mod_log_sqlをインストールしてみた」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。