如何在glassfish中启用泽西跟踪记录

时间:2017-07-13 05:55:37

标签: java logging jersey glassfish

我一直在编写RESTful Web服务。我使用的技术:Glassfish 4,JDK 8&泽西岛(玻璃鱼的一部分)。

要解决问题,我想启用泽西类完成的跟踪日志记录。对于例如下面是MessageBodyFactory的_getMessageBodyWriter()方法中的日志代码

 final TracingLogger tracingLogger = TracingLogger.getInstance(propertiesDelegate);
    MessageBodyWriter<T> selected = null;
    final Iterator<MbwModel> iterator = writers.iterator();
    while (iterator.hasNext()) {
        final MbwModel model = iterator.next();
        if (model.isWriteable(c, t, as, mediaType)) {
            selected = (MessageBodyWriter<T>) model.provider;
            tracingLogger.log(MsgTraceEvent.MBW_SELECTED, selected);
            break;
        }
        tracingLogger.log(MsgTraceEvent.MBW_NOT_WRITEABLE, model.provider);
    }

    if (tracingLogger.isLogEnabled(MsgTraceEvent.MBW_SKIPPED)) {
        while (iterator.hasNext()) {
            final MbwModel model = iterator.next();
            tracingLogger.log(MsgTraceEvent.MBW_SKIPPED, model.provider);
        }
    }

如何通过logging.properties文件启用此日志记录?

1 个答案:

答案 0 :(得分:1)

以下是一个例子:

@ApplicationPath("rest")
public class ApplicationConfig extends ResourceConfig {

    public ApplicationConfig() {
        super();
        register(LoggingFilter.class);
        // register your rest classes here
        property("jersey.config.server.tracing.type", "ALL");
        property("jersey.config.server.tracing.threshold", "VERBOSE");
    }
}

logging.properties

中设置以下内容
org.glassfish.jersey.tracing.level=ALL

这将通过HTTP标头和server.log激活泽西追踪记录,您可以使用类似Firebug或Chrome开发者控制台的内容来查看标题。

通过将jersey.config.server.tracing.type设置为ALL,您可以为每个请求启用跟踪日志记录。您还可以将其设置为ON_DEMAND,然后您必须在您的日志记录请求中添加名为X-Jersey-Tracing-Accept的标头(值并不重要)。

Glassfish中每个请求的标头数量有限制,如果您通过日志记录达到此限制,则可以通过asadmin执行此操作:

set configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.max-response-headers=1000

另见