cronolog で Apache ログをロギング時にファイル分割

Apache のログの管理って意外と面倒です。通常は Apache 付属の rotatelogs で日時でログローテートして仁別に切り出されたログを圧縮して保存なんて運用をされているかと思います。例えば、全ログ + 日別のログを保持するなら

CustomLog /var/logs/access.log common
TransferLog "|/usr/local/apache/bin/rotatelogs /var/logs/access.log 86400"

日別のログだけを保持するなら

CustomLog "|/usr/local/apache/bin/rotatelogs /var/logs/access.log 86400" common

としていることでしょう。

Apache 2 系の rotatelogs は多機能なので問題が生じませんが、Apache 1.3 系の rotatelogs はファイル名に命名規則を与えたりはできなかったりと機能的にもの足りません。そこで登場するのが cronolog です。簡単に言えば、Apache 2 系のrotatelogs をもう少し多機能にしたログローテートのプログラムなわけです。

- スポンサーリンク -

使い方は、rotatelogs とほぼ一緒で、

CustomLog "|/usr/local/sbin/cronolog /var/logs/access.log" common

と rotatelogs 部分を置き換えればOKです。せっかくなので、アクセスログの命名規則を内部の time 値ではなく、日付を出すようにするならば、

CustomLog "|/usr/local/sbin/cronolog /var/logs/access.log.%Y%m%d" common

とすれば人間が読みやすくなります。cronolog は賢くて、ディレクトリでログを管理することもできるので、

CustomLog "|/usr/local/sbin/cronolog /var/logs/%Y/%m/access.log.%d" common

何て感じで、年月別にディレクトリを掘って日別にログを生成なんてこともできます。cronolog は別に Apache ログ用に開発されているわけではないので、IIS や lighttpd 等の別の Web Server のログ管理にも使えます。まぁ Apache 2 系の rotatelogs でも同じ事はできますが、今流行の lighttpd を使って、Apache と決別したい人なんかはいいんじゃないでしょうか。

最後にインストール方法。一般的な方法と一緒でとても簡単です。

cd /usr/local/src
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
tar xvfz cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install

そうそう、cronolog に付属で付いてくる cronosplit も意外と使えます。ログのローテート、今までしたことないよって方は、cronosplit を使えば、一発でログ分割ができちゃいます。

cronosplit --template "access.log.%Y%m%d" access.log
- スポンサーリンク -