作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在编写 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/
我是一名优秀的程序员,十分优秀!