我在 tomcat 上部署了一个 Jersey 2.5.1 应用程序。我在我的 web.xml 中添加了以下配置:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
它正在打印请求和响应 header 。但是,它不会在响应中打印请求/响应实体/主体。
我尝试使用不同的参数但没有成功,例如:
INFO: 1 * Server has received a request on thread http-bio-8080-exec-3
1 > accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
1 > accept-encoding: gzip,deflate,sdch
1 > accept-language: en-US,en;q=0.8
1 > cache-control: no-cache
1 > connection: keep-alive
1 > cookie: JSESSIONID=1F5CCACA7DF2EABA9475C270A95C91B2
1 > host: localhost:8080
1 > pragma: no-cache
1 > user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36
Jan 24, 2014 1:01:31 AM org.glassfish.jersey.filter.LoggingFilter log
INFO: 1 * Server responded with a response on thread http-bio-8080-exec-3
1 < 200
1 < Content-Type: application/json
感谢您的回答。看起来我在上面粘贴了错误的配置。这是我的 web.xml 中的内容:
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.my.package.web.resources;org.codehaus.jackson.jaxrs</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.tracing</param-name>
<param-value>ALL</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
它记录标题。但它不记录实体。这是我在日志中看到的内容:
Jan 28, 2014 2:36:38 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 5 * Server has received a request on thread http-bio-8080-exec-10
5 > GET http://localhost:8080/sample/api/foo
5 > accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
5 > accept-encoding: gzip,deflate,sdch
5 > accept-language: en-US,en;q=0.8
5 > cache-control: max-age=0
5 > connection: keep-alive
5 > cookie: JSESSIONID=1F5CCACA7DF2EABA9475C270A95C91B2
5 > host: localhost:8080
5 > user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36
Jan 28, 2014 2:36:38 PM Jan 28, 2014 2:36:38 PM org.glassfish.jersey.filter.LoggingFilter log
INFO: 5 * Server responded with a response on thread http-bio-8080-exec-10
5 < 200
5 < Content-Type: application/json
我的 Jersey 应用程序部署在 Tomcat 7_50 服务器上。
如果我在我的 web.xml 中使用 init-param 配置了跟踪和日志过滤器。我还需要使用 Recource Config 注册吗?
公共(public)类 MyApplication 如下扩展 ResourceConfig:
public MyApplication() {
// Register resources and providers using package-scanning.
packages("my.package");
// Register my custom provider - not needed if it's in my.package.
register(SecurityRequestFilter.class);
// Register an instance of LoggingFilter.
register(new LoggingFilter(LOGGER, true));
// Enable Tracing support.
property(ServerProperties.TRACING, "ALL");
}
}
最佳答案
- 您不能在
web.xml
中配置它。 - 您正在混合使用 Jersey 的 2 个版本(
web.xml
中的初始化参数来自 Jersey 1 -com.sun.jersey
包前缀) - 看看Registering Resources and Providers in Jersey 2您可以在那里找到如何注册
LoggingFilter
以确保实体也被记录。
关于tomcat - 如何在 tomcat 上获取 Jersey 2.5.1 以记录包括实体(请求/响应正文)的请求/响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328709/