簡體   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