7.1 logrotateについて |
RedHatをはじめ多くのディストリビューションでは、 logrotateプログラムを使ってログファイルのローテーションを行っています。
7.2 設定 |
はじめに、logrotate設定ファイルで設定できるコマンドについて、表に示します。
コマンド | 説明 |
rotate [N] | 指定したログファイルのローテーション回数を指定する。この場合N回。 |
Missingok | ログファイルが無くとも、処理を正常終了する。 |
compress | 古いログファイルをgipで圧縮する。 |
nocompres | 圧縮しない。 |
size [size M/K] | ログファイルが指定したサイズまで大きくなったらローテーションを開始する。サイズはメガ[M]かキロ[K]で指定する。 |
create [permition] [owner] [group] | ログファイルのローテーション開始時に、新たにファイルを生成する。パーミッション、所有者、グループを指定できる。 |
ncreate | 新たにファイルを生成しない。 |
ifempty | ログファイルが空でもローテーションを行う。 |
noifempty | ログファイルが空ならローテーションを行わない。 |
daily | ログファイルを毎日、ローテーションする。 |
weekly | ログファイルを毎週、ローテーションする。 |
monthly | ログファイルを毎月、ローテーションする。 |
postrotate | このコマンドの後に、ログファイルのローテーション後に実行するUNIXコマンドを記述する。 |
endscript | postrotateの終端を示す。 |
sharedscripts | 複数指定されたログファイルに対し、postrotate以降設定されたUNIXコマンドを実行する。 |
include [dir] | dirディレクトリ以下の各種設定ファイルを読み込む。 |
3行目で、ローテーションの頻度が指定されています。デフォルトの設定ではweekly(毎週)ローテーションを行うよう設定されています。もしも頻度を変えたければ、daily(毎日)、monthly(毎月) を指定することが出来ます。
18行目の"include"コマンドで"/etc/logrotate.d"ディレクトリ以下の各種設定ファイルが読み込まれます。
各ログファイルの具体的なローテーション設定ファイルは、"/etc/logrotate.d"ディレクトリ以下に置かれています。
21行目以降は、/var/log/wtmpファイルのローテーション設定です。
1 # see "man logrotate" for details 2 # rotate log files weekly 3 weekly 4 5 # keep 4 weeks worth of backlogs 6 rotate 4 7 8 # send errors to root 9 errors root 10 11 # create new (empty) log files after rotating old ones 12 create 13 14 # uncomment this if you want your log files compressed 15 #compress 16 17 # RPM packages drop log rotation information into this directory 18 include /etc/logrotate.d 19 20 # no packages own lastlog or wtmp -- we'll rotate them here 21 /var/log/wtmp { 22 monthly 23 create 0664 root utmp 24 rotate 1 25 } 26 27 # system-specific logs may be configured here |
# ls /etc/logrotate.d/ apache cron ftpd syslog |
4行目にpostrotateコマンドが設定され、ログファイルのローテーション後、apacheサーバにハングアップシグナル(HUP)が送られ、再起動します。これは、apacheサーバがローテーション済みのログファイルを手放し、新たなログファイルにログを出力するようにするためです。
ローテーションの頻度は、/etc/logrotate.confファイルで設定された"weekly"が継承されています。ローテーションの頻度を変えたい場合には、2行目〜3行目の間に"daily"か"monthly"を挿入します。
1 /var/log/httpd/access_log /var/log/httpd/agent_log /var/log/httpd/error_log /var/log/httpd/referer_log { 2 missingok 3 sharedscripts 4 postrotate 5 /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true 6 endscript 7 } |
home |index |previous |next |contents