gpt4 book ai didi

java - 如何在 glassfish 中启用 Jersey 跟踪记录

转载 作者:行者123 更新时间:2023-11-30 06:36:53 25 4
gpt4 key购买 nike

我一直在编写 RESTful Web 服务。我使用的技术:Glassfish 4、JDK 8 和 Jersey(glassfish 的一部分)。

为了解决问题,我想启用 Jersey 类完成的跟踪日志记录。例如下面是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文件启用此日志记录?

最佳答案

这是一个例子:

@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 header 和 server.log 激活 Jersey 跟踪日志记录,您可以使用 Firebug 或 Chrome 开发者控制台等工具来查看 header 。

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

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

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

另请参阅:

关于java - 如何在 glassfish 中启用 Jersey 跟踪记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com