Tomcat上的Grails-如何记录原始HTTP请求/响应

Tomcat上的Grails-如何记录原始HTTP请求/响应,tomcat,grails,logging,Tomcat,Grails,Logging,我找不到将我的虚拟教程Grails应用程序配置为记录Grails服务器(实际上是-Tomcat)接受/生成的所有HTTP请求和响应的方法。这是可能的吗?这样的日志记录可以很容易地实现为一个过滤器——Grails过滤器(请参阅这些过滤器的描述和一个示例日志记录过滤器),或者作为一个标准的servlet过滤器(可以在这里找到一个示例:) 如果选择第二个选项,则必须修改web.xml以包含过滤器。为此,请执行grails安装模板。这将把标准的web.xml复制到项目中的templates/web-IN

我找不到将我的虚拟教程Grails应用程序配置为记录Grails服务器(实际上是-Tomcat)接受/生成的所有HTTP请求和响应的方法。这是可能的吗?

这样的日志记录可以很容易地实现为一个过滤器——Grails过滤器(请参阅这些过滤器的描述和一个示例日志记录过滤器),或者作为一个标准的servlet过滤器(可以在这里找到一个示例:)


如果选择第二个选项,则必须修改
web.xml
以包含过滤器。为此,请执行
grails安装模板
。这将把标准的
web.xml
复制到项目中的
templates/web-INF
目录,您可以在那里修改它。

另一个选项是使用tomcat内置的访问日志记录

我自己也在使用它,它是可配置的

如何配置tomcat 6

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>


将其添加到server.xml配置末尾的“Host”标记下。

您可以使用Grails插件:或Tomcat过滤器。
如果使用Tomcat7,则它是RequestDumperFilter。 我更喜欢RequestDumperFilter

简而言之:

安装Grails模板

grails install-templates 这应该足够了


如果您需要更多的信息,您会发现一个广泛的指令。

如果您描述如何使它与Grails一起工作,我敢打赌这个选择。不幸的是,Grails(在执行Grails run app时)在其JVM实例中执行了一些隐藏的魔法来启动Tomcat,在这种情况下,天知道如何配置它:(下载tomcat。将valve配置添加到server.xml。然后键入grails war。将war复制到tomcat webapps文件夹。启动tomcat。现在对你的应用程序执行几个请求。然后检查你的tomcat logs文件夹中的访问日志。啊,这实际上是以运行tomcat本身结束的。我一直在寻找开发模式下的跟踪,即“grails run应用程序"。我担心这有点不同。好吧,grails中的run app也运行tomcat。当然,也应该有一个server.xml文件,您可以通过某种方式进行编辑或引用。但是,我自己没有这样做。根据tomcat文档,server.xml应该位于
$CATALINA_BASE/conf/server.xml
,因此如果是您可以(例如通过System.properties)在启动时确定tomcat的主文件夹是什么。然后您可能只需添加自己的server.xml…可能…:)祝您好运,玩得开心。我已经尝试过(作为servlet过滤器)它确实可以工作,但是需要一些编码。它似乎不再是一个有效的URL。有人知道这个库是否已经更新以支持Grails 3吗?
<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>
debug   'org.apache.catalina.filters.RequestDumperFilter'