- PR -

Tomcatのアクセスログについて

1
投稿者投稿内容
GUTA
会議室デビュー日: 2004/02/26
投稿数: 3
投稿日時: 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 ]
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-03-09 18:21
コード:

pattern="common"


に、してみてはどうですか?

出力データの詳細は下記にあります。
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/config/valve.html

[ メッセージ編集済み 編集者: Edosson 編集日時 2005-03-09 18:25 ]
GUTA
会議室デビュー日: 2004/02/26
投稿数: 3
投稿日時: 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);
の結果と同じ結果が返ってくると思ったのですが・・・
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-03-10 10:40
こっちも勘違いしていたようで、すみません。

ちょっと調べてみたところ、POSTメソッドの場合、FORMタグの内部で取得された
パラメータは、getQueryString()では、取得できない旨の記述を見つけました。
逆に、POSTでも、<FORM ACTION="......?key=varlue" >と、直接記述してある場合は、
ログに出力されるはずですよ。これは、手元でも確認できました。

それ以外のパラメータを取得するには、自分でコードを書くか、
そのようなフレームワークを利用するくらいしか、自分にはわからないです。
GUTA
会議室デビュー日: 2004/02/26
投稿数: 3
投稿日時: 2005-03-10 19:26
Edossonさん、返信ありがとうございます。

やはりTomcatのアクセスログでは、
POSTのパラメータを出力できないようですね。

フィルタを使って、クライアントからのPOSTのパラメータを
ログに出力できました。


1

スキルアップ/キャリアアップ(JOB@IT)