【发布时间】:2020-12-27 00:48:48
【问题描述】:
我们有一个带有遗留应用程序的 tomcat9,使用 jul 来记录运行。为了能够更轻松地控制日志格式并拥有 MDC 和其他一些功能,我们使用 org.apache.logging.log4j.jul.LogManager 和 log4j 配置文件,如下所示:
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j.configurationFile="\path\to\file\log4j2.xml
这对于通过以下方式获取的所有记录器都非常有效 记录器日志 = Logger.getLogger(LoggingTest.class.getName());
但在遗留代码中还有 GlobalLogger 以及使用的匿名记录器,例如像这样(简化但重现了问题):
Logger.getGlobal().log(Level.INFO, "bar with global"); Logger.getAnonymousLogger().log(Level.INFO, "匿名栏");
这些不是通过 log4j 记录,而是直接使用 Java Util 完全忽略 LogManager。在这些情况下返回的记录器不是 org.apache.logging.log4j.jul.CoreLogger 的实例,而是 java.util.logging.Logger,尽管它的管理器仍然是 org.apache.logging.log4j.jul.LogManager。
这是一个已知的限制和/或是否有解决方法?
【问题讨论】: