Apacheのログ出力はcronolog経由が便利

Ubuntuでもそうだけど、Apacheインストール直後はlogrotateで4時くらいにログをローテートさせるのが一般的。

  • 何か追加でインストールする必要が無い
  • 指定した期間でローテートできる
  • 指定した期間で削除できる
  • 自動的に圧縮できる

みたいなメリットがある。
でも逆に、

  • 出力ファイル名を変更できない(出来るけど面倒)
  • さらに月別にディレクトリを掘るとかが大変

ってことで、出力ファイル名を変えたい人は普通Apacheに付属のrotatelogsを使っているみたい。
でも、どうにもrotatelogsのオプションがしっくりこなくて使ってなかったんだけど、似たようなものでcronologというのがあって、そっちがしっくりきたので、簡単にメモ。

インストールはaptitudeで簡単に入るので省略。

使い方も簡単で、ログ出力指定のところにパイプで書くだけ。

CustomLog “|/usr/bin/cronolog -S /var/www/logs/latest -P /var/www/logs/latest.prev /var/www/logs/%Y/%m/default-%Y%m%d-access.log” combined

こんな感じ。ErrorLogやRewiteLogなどパイプで渡せる部分にならどこでも使える。(別にApacheじゃなくても良い)
年/月 とディレクトリを作成して、その下に default-20100601-access.log みたいなファイル名でログを出力する設定になっている。

詳しいオプションは本家ページのUsageを確認して貰うとして、便利なのは S オプションと P オプション。
それぞれ、Sが最新(現在出力中)のファイルへのシンボリックリンク作成、Pが一個前(上記の例だと1日前)のファイルへのシンボリックリンクが作成される。
いちいち今出力されているログファイルのパスとかファイル名を考えなくてもシンボリックリンクを参照すれば良いので管理が楽になる。

結構ボケーッとログファイルを眺めていることが好きなので、そういうときには、

tail -q –follow=name –retry /var/www/logs/latest

とかやっておけば、ログを流して見ておけるし、日付が変わってリンク先が切り替わっても追従してくれる。
pオプションで作ったリンクは、前日のログファイルをvisitorsなどで解析するときの指定に便利。

rotatelogsは付属してくるので割と使われているのを見るけど、cronologの方が高機能だからオススメ。

ちなみに当たり前だけど、ログは出力されっぱなしで圧縮も削除もされないので、その辺りはfindコマンドなどで別途実装する必要がある。

投稿者:

kuni

サイトの管理人です

コメントを残す

メールアドレスが公開されることはありません。