我在基于 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();
我想知道我是否做错了什么。请协助。
最佳答案
据我所知,这是由 SLF4J 在支持日志记录实现尚未初始化时使用中间工厂引起的。如果您首先向 LoggerFactory 询问记录器,例如根记录器,这将初始化 Logback,之后您的代码应该获得合适的 LoggerContext。我遇到这个问题是因为我的记录器是在第一次访问时懒惰地创建的,并且只有在我尝试检索 LoggerContext 之后才会出现第一个日志语句。在类中使用通常的 private static final Logger = LoggerFactory.getLogger("...")
行检索 LoggerContext 也将具有相同的效果,尽管连接是那就不明显了。
关于java - Logback 和 SLF4J 编程配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335805/