Logback和SLF4J程序化配置

时间:2014-01-24 14:59:54

标签: java slf4j logback

我在基于tomcat的Web应用程序中使用Logback和SLF4J。我没有使用任何logback.xml文件。一切都是以编程方式完成的。但是,我不时收到以下错误消息:

java.lang.ClassCastException: org.slf4j.helpers.SubstituteLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext.

以及抛出该异常的代码部分:

LoggerContext logCtx = (LoggerContext) LoggerFactory
                .getILoggerFactory();

我想知道我是否做错了。请协助。

1 个答案:

答案 0 :(得分:4)

据我所知,这是由SLF4J使用中间工厂引起的,而后备日志工作尚未初始化。如果您首先向 LoggerFactory 询问记录器,例如根记录器,这将初始化Logback,然后你的代码应该得到一个合适的 LoggerContext 。我遇到这个是因为我的记录器在第一次访问时被懒惰地创建,并且只有在我尝试检索LoggerContext之后才出现第一个日志语句。检索 LoggerContext 的类中通常的private static final Logger = LoggerFactory.getLogger("...")行也会产生相同的效果,但是连接并不明显。