【问题标题】:Java Jersey How can I block loggingFilter prints?Java Jersey 如何阻止 loggingFilter 打印?
【发布时间】:2018-08-05 23:03:05
【问题描述】:

我正在使用打印所有请求/响应内容的 jersey loggingFilter 类。 这是过滤器连接代码:

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 类没有自动打印响应?

谢谢。

【问题讨论】:

    标签: java spring server jersey


    【解决方案1】:

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

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

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

    所以将此行更改为:

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

    可以解决这个问题。

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 2013-12-31
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多