java - Logback 和 SLF4J 编程配置

标签 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();

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

最佳答案

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

关于java - Logback 和 SLF4J 编程配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335805/

相关文章:

gradle - 替换logback.xml文件目录

java - 如何避免 Spring Boot Logback 在文件创建时快速失败?

java - IBM WebSphere 8.5 中的 LogBack 作为 SharedLibrary

java - Maven单片机:add gives error

JavaFX : Rotated animation delay between cycles

java - 如何在 spring 中将图像转换为多部分文件

logging - Tomcat 日志记录 catalina.out 持续增加

java - 调整选项菜单条目的大小

grails run-war 导致 SLF4J : Class path contains multiple SLF4J bindings

java - Spring boot logback 没有记录到文件