勉強も兼ねてApacheのログをデータベースに出力してみる。
何で?わざわざDBに?という事だが、
メリット)
・複数Webサーバのログを集約することが出来る
・ログから条件で抜き出す事が容易かつ高速
デメリット)
・DBのメンテナンスが必要
・ログの記録に関してはパフォーマンス的にどうか?
実際に出力する方法としては
httpd.confのCustomLog行でパイプが使える(rotatelogもパイプ使いますよね・・・)ので、「標準入力から入力されたアクセスログをデータベースに書き出す」プログラムがあれば実現可能となる。
CustomLog "|/usr/local/bin/PROGRAM" common
勉強も兼ねてPerlで書いてみた。
PerlからDBを操作する方法としてはDBIを利用するのが簡単そうである。
テストで書いてみたので、置いてみる。テストで作ってみたPerlソースファイル
多分自分が一番見るんだけど。
標準入力(<>)から入力された行を区切って項目別に分けて、データを準備して、それをSQL文(INSERT)に渡すだけである。
コメント