【发布时间】:2012-02-08 12:57:44
【问题描述】:
我找不到配置我的虚拟教程 Grails 应用程序以记录 Grails 服务器(实际上是 Tomcat)接受/生成的所有 HTTP 请求和响应的方法。这可能吗?
【问题讨论】:
我找不到配置我的虚拟教程 Grails 应用程序以记录 Grails 服务器(实际上是 Tomcat)接受/生成的所有 HTTP 请求和响应的方法。这可能吗?
【问题讨论】:
另一种选择是使用 tomcat 的内置访问日志记录。
http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Access_Log_Valve
我自己使用这个,它是相当可配置的。
如何配置tomcat 6
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
将此添加到您的 server.xml 配置末尾的“主机”标签下。
【讨论】:
$CATALINA_BASE/conf/server.xmlso,如果您可以确定(例如通过 System.properties)启动时 tomcat 的主文件夹是什么。然后你可能只需要添加你自己的 server.xml ......可能...... :) 祝你好运,玩得开心。
您可以使用 Grails 插件:https://github.com/TouK/grails-httplogger 或 Tomcat 过滤器。
如果你使用 Tomcat 7,它就是 RequestDumperFilter。
我更喜欢 RequestDumperFilter。
简而言之:
安装 Grails 模板
grails 安装模板编辑 web.xml 并添加 RequestDumperFilter
<filter>
<filter-name>requestdumper</filter-name>
<filter-class>org.apache.catalina.filters.RequestDumperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestdumper</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
编辑 Config.groovy 中的 log4j 部分并添加
debug 'org.apache.catalina.filters.RequestDumperFilter'
这应该足够了。
如果您需要更多信息,here 您会找到详细说明。
【讨论】:
此类日志记录可以很容易地实现为过滤器 - 可以是 Grails 过滤器(参见 http://grails.org/doc/latest/guide/theWebLayer.html#filters 以了解这些过滤器的描述和示例日志过滤器),也可以作为标准 servlet 过滤器(可以在此处找到示例:http://www.java2s.com/Code/Java/Servlets/LogFilter.htm )。
如果您选择第二个选项,则必须修改 web.xml 以包含您的过滤器。为此,请执行grails install-templates。这会将标准的web.xml 复制到您项目中的templates/WEB-INF 目录中,您可以在那里进行修改。
【讨论】: