2014-01-24 87 views
3

我有一個在tomcat上部署的Jersey 2.5.1應用程序。我在web.xml中添加了以下配置:我如何在tomcat上獲得Jersey 2.5.1以記錄請求/響應,包括實體(請求/響應體)

<init-param> 
    <param-name>jersey.config.server.provider.classnames</param-name> 
    <param-value>org.glassfish.jersey.filter.LoggingFilter</param-value> 
</init-param> 

它打印請求和響應標頭。但是,它不會在響應中打印請求/響應實體/實體。

我試着用不同的PARAMS,但沒有運氣打,如:

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配置了跟蹤和loggingfilter。我還需要使用Recource Config註冊嗎?

公共類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"); 
    } 
} 

回答

1
  1. 您不能配置在web.xml
  2. 你混合兩個版本澤西(NIT-PARAMS在web.xml來自澤西1 - com.sun.jersey包前綴)
  3. 看看Registering Resources and Providers in Jersey 2你可以找到有怎樣註冊LoggingFilter確保實體也記錄。
+0

註冊您的MyApplication.java請看到我的意見如下: – singh

+0

提供的鏈接3.包含不能編譯的代碼,並且有一些令人困惑的錯誤。我沒有覺得它非常有用。 – rakehell

+0

按照3,我仍然無法獲得實體的日誌記錄。任何幫助更多? – ducanhng

0

您可以創建一個CustomLoggingFilter.java按照LOKESH Gupta的instructions

我結束了註冊該過濾器略有不同,但:

public class MyApplication extends Application { 
    @Override 
    public Set<Class<?>> getClasses() { 
     final Set<Class<?>> classes = new HashSet<>(); 
     classes.addAll(super.getClasses()); 
     classes.add(CustomLoggingFilter.class); 
     return classes; 
    } 
} 

web.xml

<init-param> 
    <param-name>javax.ws.rs.Application</param-name> 
    <param-value>org.something.MyApplication</param-value> 
</init-param> 
+0

嗨,我幾乎一樣。但是我無法用Json格式打印它。任何見解?謝謝 – theGamblerRises