Log4j2 迁移 getLoggers 实现与 log4j1

问题描述 投票:0回答:1

我正在升级到 log4j2。其中大部分似乎都有效,但我注意到在运行我的应用程序时存在一些不同的行为。使用 log4j1,当我调用时:

Enumeration loggers = LogManager.getCurrentLoggers();
我将看到 600 多个记录器返回(这是预期的)。使用 Log4j2 时,我用
Collection<Logger> allLoggers = context.getLoggers(); LoggerContext context = (LoggerContext) LogManager.getContext(false);
替换了这个调用,它只返回大约 180 个记录器。不幸的是,我目前无法访问我的新属性文件,但它看起来像是先前版本的正确实现。

我会注意到,所有记录器仅来自我在属性中声明的记录器之一(但所有记录器都遵循相同的结构并使用相同的附加程序)。任何建议表示赞赏!谢谢。

编辑:我意识到丢失的日志全部来自第三方库。我已经设置了 slf4j - log4j2 桥接器,但似乎有问题?

logging log4j
1个回答
0
投票

查看我们的从 Log4j 1 迁移指南中的Log4j 1 后端迁移,获取需要替换的部分桥接器列表。

总结起来就是:

  • slf4j-log4j12/reload4j
    替换为
    log4j-slf4j-impl
    (您已经这样做了),
  • commons-logging
    升级到版本1.3.0或更高版本(引入了嵌入式JCL-to-Log4j 2 API桥),
  • JBoss Logging API 自古以来就支持 Log4j 2 API,但您可能想检查一下。
  • 据我所知,从来没有 JUL 到 Log4j 1 桥接器,但有一个 JUL 到 Log4j 2 API 桥接器。有关更多详细信息,请参阅安装 JUL-to-Log4j 桥接器。它可能需要更改应用程序启动脚本或静态调用主类的
    top
    处的 System.setProperty
© www.soinside.com 2019 - 2024. All rights reserved.