Apacheのログをデータベースに出力する

勉強も兼ねてApacheのログをデータベースに出力してみる。

何で?わざわざDBに?という事だが、
メリット)
・複数Webサーバのログを集約することが出来る
・ログから条件で抜き出す事が容易かつ高速

デメリット)
・DBのメンテナンスが必要
・ログの記録に関してはパフォーマンス的にどうか?

実際に出力する方法としては
httpd.confのCustomLog行でパイプが使える(rotatelogもパイプ使いますよね・・・)ので、「標準入力から入力されたアクセスログをデータベースに書き出す」プログラムがあれば実現可能となる。

CustomLog "|/usr/local/bin/PROGRAM" common

勉強も兼ねてPerlで書いてみた。
PerlからDBを操作する方法としてはDBIを利用するのが簡単そうである。

テストで書いてみたので、置いてみる。テストで作ってみたPerlソースファイル

多分自分が一番見るんだけど。

標準入力(<>)から入力された行を区切って項目別に分けて、データを準備して、それをSQL文(INSERT)に渡すだけである。