Python - apache のログを編集する - 概要

クラウディア 
1. 概要
2. 試行錯誤

1. 概要

 やろうとしていることは、正に表題のとおりです。  同じことを、「perl」でやっておったのですが、「Python」に少し慣れてきたら、「Python」の方が、もう少しわかりやすくコーディングできるような気がしてきました。  そもそも、「apache」のログ解析を複数のプログラムで行って、多面的(うふ、かっこいいわね)に解析しようとしているのですが。  どのプログラムでもログとして解析しなくてもいい行があります。  まぁ、一番多いのが、自分でのアクセスだったりします。  これが、一番アクセス数が多かったりするので厄介です。  これは、フィルタリングするのですが、フィルタリングを各プログラムでやらせるのも馬鹿らしい。  プログラムに食わせる前にログをフィルタリングしておいて、それをプログラムに食わせるのが効率的ですわな。  ということで、それが目的なのです。  命題は、以下の通り。
 ・入出力するファイルやフィルタリングする内容はコンフィグレーションファイルに書き出していちいちプログラムをいじらなくていいようにする
 ・入力ログファイルは、ローテーションして複数あるが1つのファイルにまとめて出力する
 ・検索語は、フィルタリングの際にエンコードしておく

2. 試行錯誤

 いくつかの試行錯誤を行ったのですが・・・。  大きかったのは、「apache-log-parser」という「apache」のログパーサを使用しようとしたのですが。  まぁ、ある程度の大きさのファイルですので、これを使うとオーバヘッドが大きくて、時間がかかりすぎるので断念しました。  結局、1行ずつ「in」を使用して、フィルタするワードを含んでいれば、フィルタリングして除外するという手法にしました。