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/

相关文章:

Spring-Boot Embedded Tomcat - 生成localhost.log和cataline.out文件

java - slf4j-log4j12 和 log4j-over-slf4j 之间的区别

java - logback 根本不记录到控制台

java - logback.xml 文件未加载

java - FreeTTS 可移植性问题

java - 适用于 Spring 和其他应用程序的 OSGi bundle

java - 如何分别使用 JBoss Logging 记录 JBoss 服务器特定日志和使用 log4j 记录应用程序特定日志?

java - Logback 无法正确清理文件

java - 检测 2D 图形填充矩形是否在另一个填充矩形中(eclipse)

java - 如何使用 Gson 反序列化 ConcurrentMap