2012-08-11 98 views
1

我正在编写一个Java应用程序,它将使用SLF4J来处理使用JUL(Java Utils Logging)的运行时绑定进行日志记录。因此我的类路径将有slf4j-api-1.6.4.jar以及slf4j-jdk14-1.6.4.jarSLF4J桥接所需的配置文件

JUL可以通过logging.properties配置,所以我也需要在我的类路径中。

为了确保所有的第三方的依赖登录到同一JUL的配置,我就准备把下面所有的桥梁我的类路径中:

  • jcl-over-slf4j-1.6.4.jar
  • log4j-over-slf4j-1.6.4.jar

JCL通过commons-logging.properties进行配置,Log4J通过log4j.properties进行配置。

我的问题:我是否需要在我的类路径中放置commons-logging.propertieslog4j.properties,或者因为SLF4J网桥,这是不必要的?

我90%确定我不需要,但需要在这里进行理智检查!我的理论是,这些桥接器将存根替换为正常的JCL/Log4J类,只是盲目地调用SLF4J API调用。

这些SLF4J API调用反过来像我的代码一样,使用它们在运行时绑定的任何实现。由于在我的情况下绑定是JUL,只需要一个logging.properties文件。

但我不是伐木专家,我宁愿安全也不抱歉。所以我需要这些额外的配置文件,如果是这样,请解释为什么我可以更好地了解SLF4J的工作原理!提前致谢!

回答

1

不,您不需要在类路径中放置commons-logging.propertieslog4j.properties,由于SLF4J桥接器的原因,这不必要。你对新娘的理解是正确的。

如果你使用Maven,你可能会希望使用Banned Dependencies执法规则,以避免依赖关系的log4j,共享记录或匍匐的logback。

+0

我看到第一次有人提到执法插件。对于非常大的项目和维护单个日志记录实施来说,这是必须的。 – alan7678 2016-01-28 17:34:15