4

我试图调查特定 HTTP 请求被发送到网站的频率。该请求是一个 POST 并且有一个名为 的参数"_method"。我可以在萤火虫中看到这一点。

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

%{_method}r

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

我想知道是因为下划线吗?

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

4

2 回答 2

7

好的,我要做的是使用 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)是给我的关键部分。

我包括任何旁观者的答案。

于 2012-07-03T14:20:59.940 回答
2
%{xxx}r 

用于“ServletRequest 中的属性”而不是 HTTP 参数(如果您可以在 Firebug 中看到,我假设您的意思是)。ServletRequest 属性将完全是服务器端的,因此您将无法在 Firebug 中看到它们。

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

如果上述内容不清楚,则getAttribute() 和 getParameter() 之间的区别说明了区别。

于 2012-07-03T13:52:40.517 回答