- - PR -
apacheのログ取得方法について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-21 20:22
kumapooと申します。
apacheのログ取得ポリシーを変更したいと思っています。 どのようにhttpd.confに記述すればよろしいでしょうか? (現在) SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(GIF)|(JPG)|(PNG)|(css)|(js)|(swf)$" nolog LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{cookie}i\"" combined_cookie CustomLog /home/www/test-ad.hoge.com/logs/access_log combined_cookie env=!nolog ドキュメントルート/getgazoulou に.gif、.jpg、.png 等の呼び出し記録をログに書き込みたいと思います。 ログファイルは2つに分けないで、既存のログをそのまま運用したいと思います。 SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(GIF)|(JPG)|(PNG)|(css)|(js)|(swf)$" nolog あるディレクトリ→^/getgazoulog/ [ メッセージ編集済み 編集者: kumapoo 編集日時 2005-11-21 20:24 ] [ メッセージ編集済み 編集者: kumapoo 編集日時 2005-11-21 20:40 ] [ メッセージ編集済み 編集者: kumapoo 編集日時 2005-11-21 20:42 ] | ||||||||||||
|
投稿日時: 2005-11-22 08:21
こんにちは。投稿された内容から、kumapooさんが何をされたいのか解釈しかねます。
現在[gif/jpg/png/css/js/swf]以外のアクセスを /home/www/(略)/access_logとして取得していて、それとは別途で画像([gif/jpg/png]と仮定)の呼び出し記録を取得したいのですよね?にもかかわらず下記の要望はどうやっても満たせないのではないでしょうか。
画像に対するアクセスログと、画像・Flash・CSS以外の通常のアクセスログを別々に取得するということでしたら以下のような形になるかと思います。
余談になりますが、バックスラッシュってどのようにして表示されているのですか? | ||||||||||||
|
投稿日時: 2005-11-22 09:47
現状どんな設定になってるのかは読み取れても、
どんな結果を意図していて、にもかかわらずどんな結果になってしまうのか、 が書かれてないので、答えにくいのですが。
とりあえず、正規表現部分は、()と|の順序を勘違いしているように見えます。
のいずれかにマッチする、みたいな書き方になってます。 「"."、列挙した拡張子文字列、URLの終端」というパターンを表現するなら、 \.(gif|jpg|png|GIF|JPG|PNG|css|js|swf)$ になります。 _________________ Mattun Microsoft MVP for Directory Services (Oct 2006-Sep 2007) | ||||||||||||
|
投稿日時: 2005-11-22 16:19
Utaさん、Mattunさん
ありがとうございます。 kumapooです。
意味不明な質問なって、すいません、ログ取得のポリシーを設定するのが初めてなもので。前任者の設定を変更しています。下記のように当初の質問内容を修正いたしました。
ドキュメントルート/getgazoulog の[gif/jpg/png/css/js/swf]へアクセスがあった場合のみログに書き込みたいと思います。 また、それ以外のディレクトリに関しては既存のポリシー通り、[gif/jpg/png/css/js/swf]のアクセスのログは取得しません。 ログファイルは2つに分けないで、既存のログをそのまま運用したいと思います。 Utaさんのおっしゃるとおり、アクセスログを2つに分けるしかなさそうですね。 バックスラッシュはどうやって挿入したか自分でも覚えていません??? [ メッセージ編集済み 編集者: kumapoo 編集日時 2005-11-22 16:32 ] | ||||||||||||
|
投稿日時: 2005-11-22 16:41
kumapooです。
ログ取得の設定変更をしてみました。 #Mattunさん、正規表現の問題はちょっと後で再度確認いたします。。。すいません。 1つのファイル(access_log)へ異なるポリシーを書き込むのはあきらめました。画像ログ用のファイル(image_log)を作成しました。Utaさんのおっしゃる通り、2つのファイルへ分ける設定にしました。 SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(GIF)|(JPG)|(PNG)|(css)|(js)|(swf)$" nolog SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(GIF)|(JPG)|(PNG)|(css)|(js)|(swf)$" imagelog LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{cookie}i\"" combined_cookie CustomLog /home/www/test-ad.hoge.com/logs/access_log combined_cookie env=!nolog SetEnvIf Request_URI ^/getgazoulog/ combined_cookie imagelog CustomLog /home/www/test-ad.hoge.com/logs/access_log combined_cookie env=!nolog CustomLog /home/www/test-ad.hoge.com/logs/image_log combined_cookie env=imagelog しかし、 /getgazoulogディレクトリの以外の [gif/jpg/png/css/js/swf]へアクセスがあった場合に、 image_log へログが書き込まれてしまいました。 これじゃ、ポリシを分割した意味がありません。 どこがおかしいでしょう? [ メッセージ編集済み 編集者: kumapoo 編集日時 2005-11-22 16:43 ] | ||||||||||||
|
投稿日時: 2005-11-22 16:54
現在が
1.画像拡張子を持つファイルへのアクセス →ログ取得なし 2.それ以外すべて →ログ取得あり の1.の部分を
の正規表現部分で表現してるんだから、その部分を修正して 1.not(/getgazoulog内)かつ画像拡張子を持つファイルへのアクセス →ログ取得なし 2.それ以外すべて (/getgazoulog内 かつ 画像拡張子を持つファイルへのアクセス も含まれる) →ログ取得あり ってのが求める動作ですか?
とかになるんだろうか。正規表現苦手(汗 /getgazoulog内の画像ファイル以外のログは取らない、とか言われると また条件が面倒になるけど、その辺はどうなんでしょう? _________________ Mattun Microsoft MVP for Directory Services (Oct 2006-Sep 2007) | ||||||||||||
|
投稿日時: 2005-11-22 17:05
kumapooです。
私が設定したいのは、まさにその仕様です
getgazoulogへは [gif/jpg/png/css/js/swf] 以外のファイルは格納しません。 ですので、問題ないです。 mattunさんの設定でちろっとデバッグしてみます。
ありがとうございます、mattunさん。 [ メッセージ編集済み 編集者: kumapoo 編集日時 2005-11-22 17:08 ] | ||||||||||||
|
投稿日時: 2005-11-22 17:10
とりあえず、僕が書いた正規表現は全然自信がないし、
http://www.example.com/hoge/getgazoulog/foo.img みたいなURLはどうするのか?とかは全然考慮してないです。 ここまでくると完全に正規表現(SetEnvIfで使えるのはPerl互換の正規表現)の 問題なので、試行錯誤するついでに正規表現関連のWebサイトや書籍でも 漁ってください。 まあやり始めるときり無いですが<正規表現 _________________ Mattun Microsoft MVP for Directory Services (Oct 2006-Sep 2007) |