【问题标题】:How to use SLF4J Log4jLoggerAdapter如何使用 SLF4J Log4jLoggerAdapter
【发布时间】:2011-06-10 08:31:45
【问题描述】:

我正在 Weblogic 8.1 上部署一个企业应用程序,它的类路径上有 log4j 1.2.8。 SLF4J 1.6.1 出现以下错误:

SLF4J 版本 1.4.0 及更高版本 需要 log4j 1.2.12 或更高版本

http://www.slf4j.org/codes.html#log4j_version

以上链接建议使用 Log4jLoggerAdapter。

我变了

Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");

Log4jLoggerAdapter logger = (Log4jLoggerAdapter) LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");

但是,我仍然遇到错误。 关于如何正确实现这一点的任何建议?

谢谢。

[编辑] slf4j-api-1.6.1.jar 和 slf4j-log4j12-1.6.1.jar 在我的开发类路径中,并打包到我的 EAR 文件的 APP-INF/lib 中。 log4j 1.2.8 位于应用服务器的类路径中。

【问题讨论】:

    标签: jakarta-ee log4j slf4j


    【解决方案1】:

    问题是你必须使用相同的 slf4j-api JAR 和 implementation JAR (slf4j-log4j)。

    确保 CLASSPATH 上的两个 jar 是相同的版本。也总是只放两个:

    • API JAR
    • 实现 JAR(例如 log4j 适配器、juli 记录器、简单记录器...)

    编辑:再次查看您的错误消息:您可能需要升级 log4j 库或降级 slf4j 库。它们的版本不兼容。

    【讨论】:

    • 链接中引用:“但是,正如bug 68中所报告的,在某些环境中升级log4j版本可能会很困难。为了适应这种情况,SLF4J的Log4jLoggerAdapter会将TRACE级别映射为DEBUG 。”真的没有办法解决这个问题吗..?
    • 你想读什么?这两个版本不兼容。我会去 slf4j 降级,这不是问题。
    【解决方案2】:

    “SLF4J 版本 1.4.0 及更高版本需要 log4j 1.2.12 或更高版本”只是一个警告。 SLF4J 1.6.1 应该与 log4j 1.2.8 一起工作得很好。换句话说,您无需更改任何内容。特别是,强制转换为 Log4jLoggerAdapter 是不必要的,除了让你的代码更丑之外,它不会有任何帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2022-01-25
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2010-11-18
      相关资源
      最近更新 更多