java - 如何将 java.util.logging 发送到 log4j?

标签 java logging log4j apache-commons slf4j

我有一个现有的应用程序,它针对 log4j 执行所有日志记录。我们使用许多其他库,这些库要么也使用 log4j,要么针对 Commons Logging 进行日志记录,最终在我们的环境中使用 log4j。我们的依赖项之一甚至针对 slf4j 进行日志记录,这也可以正常工作,因为它最终也会委托(delegate)给 log4j。

现在,我想为这个应用程序添加 ehcache 以满足一些缓存需求。以前版本的 ehcache 使用 commons-logging,在这种情况下可以完美运行,但从 version 1.6-beta1 开始他们已经删除了对 commons-logging 的依赖,并将其替换为 java.util.logging。

不太熟悉 java.util.logging 提供的内置 JDK 日志记录,有没有一种简单的方法可以将发送到 JUL 的任何日志消息记录到 log4j 中,这样我就可以使用我现有的配置并设置任何来自 ehcache 的日志记录?

查看 JUL 的 javadocs,看来我可以设置一堆环境变量来更改 LogManager使用了实现,也许用它来包装 log4j Logger七月 Logger类(class)。这是正确的方法吗?

具有讽刺意味的是,当世界其他地区(大部分)使用 3rd 方库时,库使用内置 JDK 日志记录会引起如此头痛。

最佳答案

我成功使用的一种方法是使用 slf4j作为我的主要日志记录 API。然后我将 slf4j 绑定(bind)到 log4j。使用其他框架(如 JUL)的第 3 方依赖项可以是 bridged 到 slf4j。

关于java - 如何将 java.util.logging 发送到 log4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/869945/

相关文章:

Postgresql 9.3 只记录插入、删除和更新

java - log4j append=false 对我不起作用……为什么?

java - 如何从 log4j appender 中排除包

java - 我的 Java 标签很模糊

Java:for/forEach遍历int矩阵

java - 如何在Java中一遍又一遍地调用一个语句

http - 服务不可用 - IIS

java - 检查变量是 Long 还是 Double

python - 重置 python 解释器以进行日志记录

java - 日志中未显示线程 ID