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