使用slf4j,log4j和java.util.logging

时间:2018-04-26 23:36:46

标签: java logging log4j java.util.logging

我正在Weblogic服务器上运行一个Web应用程序(我真的不熟悉) 通过JVM args,log4j配置以日志级别DEBUG传递给应用程序。 在日志文件中,我还可以找到一些DEBUG级别的日志条目。

到目前为止一切顺利 在调试过程中,我发现一些不在日志文件中的logger.debug()调用。

private static final org.slf4j.Logger logger = LoggerFactory.getLogger(ActionCtr.class);

方法调用肯定会被命中,但没有任何内容写入文件。

如果我在调试期间进行了一步,我会在记录器中看到: org.slf4j.impl.JDK14LoggerAdapter(com.example.application.ActionCtr) “java.util.logging.FileHandler.pattern” - > “%H / JAVA%u.log”

这会给我带来一些问题(因为我无法更改正在运行的应用程序):
1)如何使用应用程序使用混合的log4j和java.util.logging 2)我怎样才能确定在什么课程中使用什么? 3)没有%h / java%u.log(〜/ java * .log)所以我试图提供一个java.util.logging一致的属性文件, 但这没有改变 - 我如何确定正在运行的记录器从哪里获得配置?

1 个答案:

答案 0 :(得分:0)

  

1)它是如何使用应用程序使用混合的log4j和java.util.logging

任何这些日志记录框架都可以由应用程序直接使用,也可以由应用程序使用的依赖库使用。它并没有太多的依赖关系来结束一堆日志框架搭便车。

SLF4J manual解释了日志框架如何与所有其他框架进行争论。这就是您看到org.slf4j.impl.JDK14LoggerAdapter

的原因
  

我如何确定哪些类使用了什么?

假设您的意思是直接使用,可以使用JdepsJavap

  

我如何确定正在运行的记录器从哪里获得配置?

JConsole工具可以在运行时访问JUL记录器。它还将显示所有可能包含logging.properties文件路径的系统属性。

如果应用程序以非标准方式实际配置日志记录,则一个选项是使用access选项使用java.security.debug。在安全管理器下运行应用程序将获得所有或所有必需的权限,但随后启用访问跟踪。