尝试获取请求参数以访问tomcat中的日志

时间:2012-07-03 13:45:53

标签: java tomcat tomcat6 tomcat-valve

我尝试调查特定HTTP请求发送到网站的频率。请求是POST,并且具有名为"_method"的参数。我可以在萤火虫网上看到这个。

我需要检查此"_method"参数的值,因此请按照文档http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access_Log_Valve将以下内容添加到阀门的tomcat访问配置中

%{_method}r

但它并没有出现在访问日志中。

我想知道是因为下划线?

注意,参数名称不能更改。

2 个答案:

答案 0 :(得分:6)

行, 我必须做的是使用ExtendedAccessLogValve。

我将以下内容添加到我的server.xml

    <Valve className="org.apache.catalina.valves.ExtendedAccessLogValve" directory="logs" pattern="c-dns x-H(remoteUser) date time cs-method cs-uri x-H(protocol) sc-status bytes x-P(_method)" prefix="localhost_extended_access_log." resolveHosts="false" suffix=".txt"/>

部分x-P(_method)是给我的关键部分。

我为任何旁观者提供答案。

答案 1 :(得分:2)

%{xxx}r 

用于“ServletRequest”中的“属性”而不是用于HTTP参数(我认为这意味着你可以在Firebug中看到它)。 ServletRequest属性将完全在服务器端,因此您无法在Firebug中看到它们。

如果你想输出HTTP参数(并且它不是GET,即它们在URL中),我认为你必须使用同一页面上记录的Request Dumper Valve。

如果上述内容不明确,

Difference between getAttribute() and getParameter()解释了差异。