根据需要从Java EE应用程序控制Jersey记录

时间:2016-04-17 21:26:38

标签: java java-ee logging jersey jax-rs

我需要从我的Java EE 7应用程序动态启用Jersey跟踪/日志记录。我无法访问Jersey库,我唯一的依赖是javaee-api 7.0。

我尝试使用logging.properties(JUL),但没有成功:

handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=ALL
java.util.logging.SimpleFormatter.format=%4$-7s [%3$s] %5$s%6$s%n

#All log level details
.level=ALL
org.glassfish.jersey.level=ALL
org.glassfish.jersey.tracing.level=ALL
client.Client.level=ALL

如果我设法将其配置为使用java.util.logging属性在控制台中记录所有内容,那么我计划动态地使用LogManager重新加载日志记录属性,但我仍然坚持上述第一步。

如果它有所不同,应用服务器是Payara 4,实施是泽西2。

这是一个让我实现这样的用例:

如果一个供应商(使用REST连接的第三方系统)要求我提供来自生产系统的标头和有效负载的请求/响应,我可以按需提高日志记录级别,记录所需的请求和详细信息,然后降低日志记录级别恢复正常。否则我需要使用一些监控应用程序,或中间的代理,这不是一个选项。

1 个答案:

答案 0 :(得分:1)

发现错误,我在记录属性文件中遗漏了Jersey日志处理程序: com.sun.jersey.handlers = java.util.logging.FileHandler

如果我使用这个logging.properties文件,我会得到想要的结果:

handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.level=ALL
java.util.logging.SimpleFormatter.format=%4$-7s [%3$s] %5$s%6$s%n

#All log level details
.level=ALL 

com.sun.jersey.level=ALL
com.sun.jersey.handlers=java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=debugging.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter