Java Jersey 如何阻止 loggingFilter 打印?

Java Jersey How can I block loggingFilter prints?

我正在使用 jersey loggingFilter class 打印所有 requests/responses 内容。 这是过滤器连接代码:

import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.scope.RequestContextFilter;

import com.ladpc.mobile.util.CORSResponseFilter;
import com.ladpc.mobile.util.LoggingResponseFilter;

/**
 * Registers the components to be used by the JAX-RS application
 * 
 * @author ama
 *
 */
public class MobileApplication extends ResourceConfig {

    /**
     * Register JAX-RS application components.
     */
    public MobileApplication() {
        try {
            register(RequestContextFilter.class);
            register(TaskService.class);
            register(LookupService.class);
            register(UsersService.class);
            register(PropertyService.class);
            register(DocumentsPathService.class);
            register(DocumentsService.class);
            register(WorkPlanService.class);
            register(IssueService.class);
            register(ActionTypesService.class);
            register(JacksonFeature.class);
            register(LoggingResponseFilter.class);
            register(MyApplicationEventListener.class);
            registerInstances(new LoggingFilter(Logger.getLogger(MobileApplication.class.getName()), true));
            register(CORSResponseFilter.class);
            register(MultiPartFeature.class);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

问题:一些响应内容太长,因为它包含图像内容或pdf文件内容的字节数组,所以当客户端多次调用此服务时,日志文件被填满,其原因很多运行问题。 有一种方法可以阻止某些服务,这些服务不会由 loggingFilter class?

自动打印响应

谢谢。

我发现了... 在这一行中:

registerInstances(new LoggingFilter(Logger.getLogger(MobileApplication.class.getName()), true));

有c-tor调用,第二个参数是'boolean printEntity'-如果要打印响应内容则为true,否则为false....

因此将此行更改为:

 registerInstances(new LoggingFilter(Logger.getLogger(MobileApplication.class.getName()), false));

可以解决这个问题。