繁体   English   中英

Log4j2:记录器已配置但不可用

[英]Log4j2: Logger is configured but not usable

我正在研究 JEE REST API 并且正在转换为 log4j2。 我的一些日志记录在工作,但其他的没有。

我创建了一个 appender,monitorAppender。 这是它的配置:

<RollingFile name="monitorAppender" append="true" fileName="${baseDir}/ZDA_monitor.log" filePattern="${baseDir}/ZDA_monitor.log.%i">
    <PatternLayout pattern="%d{yyMMddHHmmssSSS}|%m%x%n"/>
    <Policies>
        <SizeBasedTriggeringPolicy size="10 MB"/>
    </Policies>
    <DefaultRolloverStrategy max="5"/>
</RollingFile>

和记录器配置:

<Logger name="ZDAMonitor" level="info" additivity="false">
    <AppenderRef ref="monitorAppender"/>
</Logger>

在我尝试使用记录器时的代码中:

LogManager.getLogger("ZDAMonitor").fatal("Test123");

我在控制台而不是文件中看到了这个:

SystemOut O 14:56:50.922 [WebContainer: 1] FATAL ZDAMonitor - Test123

我不知道配置有什么问题。 我打开了 log4j 的调试日志记录,并在启动日志中看到它被正确加载:

SystemOut O 2023-01-25 14:56:43,490 WebContainer: 1 DEBUG Registering MBean org.apache.logging.log4j2:type=5745d2fa,component=Loggers,name=ZDAMonitor

我无法发布源代码,因为这是一个公司项目,但我使用的是 gradle、log4j-core 和 api 2.19.0,以及 WebSphere 8.5.5.22 和 Java 1.8。

我检查并仔细检查了配置和代码,没有发现任何问题。

WebSphere 有一个非常特殊的线程上下文类加载器。

log4j-web模块配置与上下文类加载器关联的记录器上下文。 然而,WebSphere 中的上下文类加载器并不是在您的应用程序中加载类的类加载器,因此您的应用程序的记录器使用不同的记录器上下文(和不同的配置)。 有关详细信息,请参阅LOG4J2-3577

一个简单的解决方案是使用BasicContextSelector

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM