Jersey响应日志过滤器,不包括GET的响应体



我正在使用Jersey和Tomcat开发REST web服务器,并且我有Jersey日志过滤器来记录请求和响应。我有这个在我的web.xml和它工作。

我想禁用GET响应的日志响应体,而记录PUT和POST的响应体。我该怎么做呢?

<init-param>
        <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
        <param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
        <param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.feature.logging.DisableEntitylogging</param-name>
        <param-value>false</param-value>
    </init-param>

我认为你可以这样扩展过滤器:

public class MyFilter extends com.sun.jersey.api.container.filter.LoggingFilter {
// other (maybe fundamental) code omitted for brevity
  @Override
  public ContainerRequest filter(ContainerRequest request) {
      if(!request.getMethod().equals("GET")) {
          return super.filter(request);   
      }
      return request;
  }
}

,然后改变你的web.xml使用它来代替

<param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>

最新更新