如何在slf4j logger中包装log4j logger?

时间:2013-12-07 15:42:41

标签: java logging log4j slf4j

我有一个像这样配置的log4j.Logger:

private final Logger logger = Logger.getLogger("loggerName");

它工作得很好。 但是,出于骆驼的目的,我需要获取slf4j并尝试提供log4j而不是slf4j,这导致我出现ClassCastException。

我尝试了这个,但它不起作用:

public org.slf4j.Logger getSlf4jLogger() {
        return org.slf4j.LoggerFactory.getLogger("loggerName");
    }

有没有办法将log4j Logger包装在slf4j中或使用其他技巧?

2 个答案:

答案 0 :(得分:1)

我认为这里有一个关于slf4j的误解:它是一个外观API,绑定了几个流行的日志框架,log4j就是其中之一。

Camel使用slf4j进行自己的日志记录,因此不要强制使用特定的日志框架。如果使用log4j,则可以保持代码不变,除了slf4j-api.jar之外,还需要将slf4j-log4j12.jar添加到类路径中。现在,您的log4j日志记录配置也适用于Camel的日志输出。

答案 1 :(得分:0)

有一个选择。删除log4j的库。使用log4j-over-slf4j-1.7.5.jar

因此,在 jars view 中,您可以拥有:

log4j-over-slf4j-1.7.5.jar
            ↓
    slf4j-api-1.7.5.jar
            ↓
logback-classic-1.0.13.jar
  logback-core-1.0.13.jar