ログローテーション設定

ここではApacheのバーチャルホストごとのアクセスログを記録・ローテーションの設定を行う。

■バーチャルホストごとにアクセスログを残す
httpd.confの該当のバーチャルホストのVirtualHostディレクティブに以下を記述。
[code]CustomLog /var/log/httpd/[LogFileName] combined[/code]

■ログローテーションの設定
/etc/logrotate.d/配下に各サーバごとの設定ファイルがある。
/var/log/httpd/[LogFileName]をローテーションするよう
[code]/etc/logrotate.d/httpd[/code]
に以下を追記
[code]
/var/log/httpd/[LogFileName] {
missingok
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2</dev/null` 2< /dev/null || true
endscript
}[/code]

※viなどで編集した際は編集後、チルダ付のバックアップファイルが生成される場合があり、そのファイルが残っているとエラーになるので存在すれば削除する。

■Cronの確認
[code]/etc/crontab[/code]

[code]02 4 * * * root run-parts /etc/cron.daily[/code]
といったような記述があり、
/etc/cron.daily/logrotateが存在することを確認。

以上で終了。

================================================================

■ログローテーション全体の設定

全体の設定ファイルは
[code]/etc/logrotate.conf[/code]

デフォルトでは
[code]
1:weekly
2:rotate 4
3:create
4:include /etc/logrotate.d
5:/var/log/wtmp {
6: monthly
7: create 0664 root utmp
8: rotate 1
9:}
[/code]
となっていました。
※コメント行は省略

1)毎週ローテーションする。(monthly,weekly,daily)
2)ローテーションファイルを4つ残す。
3)ローテーション後に同名のログファイルを作成する。
4)サーバーごとの設定ファイルがあるディレクトリ。
5)/var/log/wtmp (ユーザがログインした履歴)の設定。
6)毎月ローテーションする。
7)ローテーション後に同名のログファイルを作成。(パーミッション0664、所有者root、グループutmp)
8)ローテーションファイルを1つ残す。

■ローテーションのテスト

/etc/cron.daily/logrotateに記述されているコマンドを実行する。
[code]/usr/sbin/logrotate /etc/logrotate.conf[/code]

※/var/lib/logrotate.statusについて
ログローテーション実行後
[code]/var/lib/logrotate.status[/code]
に実行したファイル名と日時が記録されている。

例えば毎週ローテーションに設定していて、
/var/lib/logrotate.statusにテストしたいファイル(サーバー)が記述されていて
かつ、テスト時から見て過去1週間内の日付が記述されていればローテーションは実行されない。
その場合は目的のファイルの日時を過去1週間以上前の日付にしてテストする。