• 締切済み

特定のパラメータを含む時、出力ログを分けたい

リクエストに、「id_num」というパラメータが含まれていた時 出力ログを分けたいのですが、うまく出力されません。 #アクセスログ(例) 111.222.333.4449 - - [01/Jul/2009:12:34:56 +0900] "GET /index.php?a=st&t=menu&id_num=dq001&ui=s5650 HTTP/1.1" 200 125 "-" "DoCoMo/2.0 P905i(c100;TB;W24H15)" "xxxxxx" "-" "-" http.confは、以下のように設定を行っています。 #リクエストに「id_num」が含まれているもの抽出 SetEnvIf Request_URI "id_num" idnumlog #標準ログ(PCアクセス) CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.d/pc/pc.%Y%m%d 86400 540" combinedpc #「id_num」が含まれているログのみ(モバイルアクセス) CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/site_id.d/mob/mob.%Y%m%d 86400 540" combinedmobile env=idnumlog SetEnvIf Request_URIの書き方が悪いのでしょうか? よろしくお願い致します。

みんなの回答

回答No.2

『".*id_num.*"』がダメだったということですか? 『"^/index.php*id_num*"』これでは試してみるまでもなくマッチしないはずですね 正規表現の書き方とシェルのワイルドカード展開をごっちゃにしていませんか?

dreamwave
質問者

お礼

すみません。 正規表現に不慣れなもの。 SetEnvIf Request_URI ".*id_num.*" idnumlog と設定し。 CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/site_id.d/mob/mob.%Y%m%d 86400 540" combinedmobile env=idnumlog で出力できるか試してみましたが、旨くいきませでした。 ログをtailもしくはcatし「grep ".*id_num.*"」で抽出することはできました。 なぜ、SetEnvIf Request_URI ".*id_num.*" idnumlog で該当部部のみログ出力できんできないのかわからないところです。

回答No.1

http://httpd.apache.org/docs/2.0/mod/mod_setenvif.html#setenvif によると SetEnvIf の2番目のパラメタ、 (つまりRequest_URIの次)は regexp で書く事になっているようです # regexp とは Regular Expression の略で 正規表現 と訳語が当てられています なので ".*id_num.*" なのでは?

dreamwave
質問者

お礼

回答ありがとうございます。 幾つか、 "^/index.php*id_num*" など、正規表現を使い試してみたのですがうまくいきませんでした。 アプローチの仕方を変えた方が良いのかもしれません。 tux_the_penguinさん、あごがとうございました。

関連するQ&A