- - PR -
Tomcatのアクセスログについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-09 18:12
初めて投稿いたします。
Tomcat4.1.27 を使用しています。 クライアントからリクエストされたHTTPメソッドがGETの場合、 Tomcatのアクセスログにパラメータを表示させるには、 {CATALINA_HOME}/conf/server.xml の以下の場所の pattern に %q を指定すれば出力できることはわかりました。 -------------------------------------------------------------- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%q" resolveHosts="false"/> -------------------------------------------------------------- しかし、クライアントからリクエストされたHTTPメソッドがPOSTの場合、 Tomcatのアクセスログにパラメータを出力させる方法がわかりません。 (その前に出力できないのかもしれませんが・・・) ご存知の方、いらっしゃいましたら教えて下さい。 よろしくお願い致します。 [ メッセージ編集済み 編集者: GUTA 編集日時 2005-03-09 18:13 ] [ メッセージ編集済み 編集者: GUTA 編集日時 2005-03-09 18:13 ] | ||||
|
投稿日時: 2005-03-09 18:21
に、してみてはどうですか? 出力データの詳細は下記にあります。 http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/config/valve.html [ メッセージ編集済み 編集者: Edosson 編集日時 2005-03-09 18:25 ] | ||||
|
投稿日時: 2005-03-09 19:08
Edossonさん、返信ありがとうございます。
pattern="common"とpattern="combined"のそれぞれ試しましたが、 リクエストされたHTTPメソッドがPOSTの場合はパラメータがわかりませんでした。 Struts 1.1、Java 2 SDK, SE1.4.2を使用しているのですが、 例えばログイン画面でIDとパスワードを入力し、ログインを行った場合、 GETとPOSTではアクセスログの出力が以下のように違いました。 pattern="common" でHTTPメソッドがGETの場合 ----------------------------------------------- 127.0.0.1 - - [09/Mar/2005:18:33:35 +0900] "GET /test/login.do?id=user&password=2005 HTTP/1.1" 200 6555 pattern="common" でHTTPメソッドがPOSTの場合 ----------------------------------------------- 127.0.0.1 - - [09/Mar/2005:18:32:20 +0900] "POST /test/login.do HTTP/1.1" 200 6549 pattern="combined" でHTTPメソッドがGETの場合 ----------------------------------------------- 127.0.0.1 - - [09/Mar/2005:18:56:59 +0900] "GET /test/login.do?id=user&password=2005 HTTP/1.1" 200 5447 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" pattern="combined" でHTTPメソッドがPOSTの場合 ----------------------------------------------- 127.0.0.1 - - [09/Mar/2005:18:56:17 +0900] "POST /test/login.do HTTP/1.1" 200 5447 "http://localhost:8080/test/login.do" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" また、pattern="%{xxx}r" は ServletRequestの属性xxx のフォーマットを表すようなのですが、pattern="%{id}r" と設定しても - と出力されてしまいました。 HttpServletRequest.getParameter(id); の結果と同じ結果が返ってくると思ったのですが・・・ | ||||
|
投稿日時: 2005-03-10 10:40
こっちも勘違いしていたようで、すみません。
ちょっと調べてみたところ、POSTメソッドの場合、FORMタグの内部で取得された パラメータは、getQueryString()では、取得できない旨の記述を見つけました。 逆に、POSTでも、<FORM ACTION="......?key=varlue" >と、直接記述してある場合は、 ログに出力されるはずですよ。これは、手元でも確認できました。 それ以外のパラメータを取得するには、自分でコードを書くか、 そのようなフレームワークを利用するくらいしか、自分にはわからないです。 | ||||
|
投稿日時: 2005-03-10 19:26
Edossonさん、返信ありがとうございます。
やはりTomcatのアクセスログでは、 POSTのパラメータを出力できないようですね。 フィルタを使って、クライアントからのPOSTのパラメータを ログに出力できました。 |
1