【问题标题】:Route 3rd party libraries' Log4j logging to Log4j2将第 3 方库的 Log4j 日志记录路由到 Log4j2
【发布时间】:2015-12-26 14:11:15
【问题描述】:

我使用 Log4j2 作为其日志记录实现的 Java 应用程序依赖于使用 Log4j 的第 3 方库。

我正在尝试在我的应用程序中以编程方式(使用下面的代码)为这些第 3 方记录器设置根记录器附加程序和日志级别,但这些第 3 方库的记录器仍然没有记录到 myAppender:

LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
LoggerConfig loggerConfig = ctx.getConfiguration().getLoggerConfig(
        LogManager.ROOT_LOGGER_NAME);
loggerConfig.addAppender(myAppender, Level.ERROR, null);
ctx.updateLoggers();

我想到的一个解决方案是使用 Log4jToSLF4JAdaptor 将 log4j 的日志记录路由到 SLF4J,然后使用 Log4JSLF4JImpl 将 SLF4J 的日志记录路由到我的 Log4J2 实现,但正如此处所述 (https://logging.apache.org/log4j/2.0/log4j-slf4j-impl/index.html),它会导致无休止的路由。

您能否建议我如何将这些 3rd 方库的记录器的日志记录路由到 myAppender?

【问题讨论】:

标签: java logging log4j log4j2


【解决方案1】:

对于使用 Log4j 1.x API 的 3rd 方库:除了 log4j-api 和 log4j-core jar 文件,您还需要将 log4j-1.2-api jar 文件添加到类路径中。

对于使用 SLF4J API 的第 3 方库:将 log4j-api、log4j-core 和 log4j-slf4j-impl jar 文件添加到您的类路径(您还需要 slf4j API jar)。

对于使用 JUL (java.util.logging) 的 3rd 方库:将 log4j-api、log4j-core 和 log4j-jul jar 文件添加到您的类路径,并将系统属性 java.util.logging.manager 设置为 org.apache.logging.log4j.jul.LogManager .

【讨论】:

    【解决方案2】:

    在这里得到我的答案:Configuring log4j2 and log4j using a single log4j2 xml file

    基本上,我们需要使用 log4j-1.2-api-2.0.jar 将我们的应用程序对 log4-1.2 API 的所有调用路由到 log4j2 实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2010-10-02
      相关资源
      最近更新 更多