Java 为什么非根级别的记录器不接收日志记录?

Java 为什么非根级别的记录器不接收日志记录?,java,logging,log4j,log4j2,Java,Logging,Log4j,Log4j2,我正在将应用程序从Log4J 1.2.16迁移到Log4J 2.13.3。为此,我使用log4j21.2到2.13.3桥。在我自己的开发机器上,一切都运行得很好。但是,当我将应用程序部署到测试服务器时,日志只发送到根日志记录器,我定义的其他日志文件保持为空 两台机器上的log4j2.xml配置文件完全相同,只是附录中的路径不同。我的开发机器运行Windows,测试服务器运行Linux。该应用程序已部署到Weblogic 12.2.1.3 我已经在下面的测试服务器上包含了log4j2.xml文件(

我正在将应用程序从Log4J 1.2.16迁移到Log4J 2.13.3。为此,我使用log4j21.2到2.13.3桥。在我自己的开发机器上,一切都运行得很好。但是,当我将应用程序部署到测试服务器时,日志只发送到根日志记录器,我定义的其他日志文件保持为空

两台机器上的
log4j2.xml
配置文件完全相同,只是附录中的路径不同。我的开发机器运行Windows,测试服务器运行Linux。该应用程序已部署到Weblogic 12.2.1.3

我已经在下面的测试服务器上包含了
log4j2.xml
文件(请原谅凌乱的replace语句)。需要明确的是:所有日志都被发送到ERROR_LOG(因为这是根日志中引用的日志),其他三个日志文件被创建,但在测试服务器上保持为空,而它们在我的开发机器上接收数据

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration monitorInterval="60">
    <Appenders>
        <RollingFile name="ERROR_LOG" fileName="/var/log/weblogic/app/error.log" filePattern="/var/log/weblogic/app/error.log%d{yyyy-MM-dd}.gz">
            <PatternLayout charset="UTF-8" pattern="###%d{yyyy-MM-dd HH:mm:ss,SSS Z}{Europe/Amsterdam}|%d{yyyy-MM-dd HH:mm:ss,SSS Z}{UTC}|%-5p|%t|%c{2}|%replace{%replace{%replace{%m}{(&lt;[^/]*?[wW]achtwoord.*?&gt;).*?(&lt;/.*?[wWWachtwoord].*?&gt;)}{$1********$2}}{(&lt;pw&gt;).*?(&lt;/pw&gt;)}{$1********$2}}{(&lt;newPW&gt;).*?(&lt;/newPW&gt;)}{$1********$2}|%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <DefaultRolloverStrategy max="7"/>
        </RollingFile>
        <RollingFile name="DEBUG_LOG" fileName="/var/log/weblogic/app/debug.log" filePattern="/var/log/weblogic/app/debug.log%d{yyyy-MM-dd}.gz">
            <PatternLayout charset="UTF-8" pattern="###%d{yyyy-MM-dd HH:mm:ss,SSS Z}{Europe/Amsterdam}|%d{yyyy-MM-dd HH:mm:ss,SSS Z}{UTC}|%-5p|%t|%c{2}|%replace{%replace{%replace{%m}{(&lt;[^/]*?[pP]assword.*?&gt;).*?(&lt;/.*?[pPPassword].*?&gt;)}{$1********$2}}{(&lt;pw&gt;).*?(&lt;/pw&gt;)}{$1********$2}}{(&lt;newPW&gt;).*?(&lt;/newPW&gt;)}{$1********$2}|%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <DefaultRolloverStrategy max="7"/>
        </RollingFile>
        <RollingFile name="FACADE_LOG" fileName="/var/log/weblogic/app/facade.log" filePattern="/var/log/weblogic/app/facade.log%d{yyyy-MM-dd}.gz">
            <PatternLayout charset="UTF-8" pattern="###%d{yyyy-MM-dd HH:mm:ss,SSS Z}{Europe/Amsterdam}|%d{yyyy-MM-dd HH:mm:ss,SSS Z}{UTC}|%-5p|%t|%c{2}|%replace{%replace{%replace{%m}{(&lt;[^/]*?[pP]assword.*?&gt;).*?(&lt;/.*?[pPPassword].*?&gt;)}{$1********$2}}{(&lt;pw&gt;).*?(&lt;/pw&gt;)}{$1********$2}}{(&lt;newPW&gt;).*?(&lt;/newPW&gt;)}{$1********$2}|%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <DefaultRolloverStrategy max="7"/>
        </RollingFile>
        <RollingFile name="AUDIT_LOG" fileName="/var/log/weblogic/audit/audit.log" filePattern="/var/log/weblogic/audit/audit.log%d{yyyy-MM-dd}.gz">
            <PatternLayout charset="UTF-8" pattern="###%d{yyyy-MM-dd HH:mm:ss,SSS Z}{Europe/Amsterdam}|%d{yyyy-MM-dd HH:mm:ss,SSS Z}{UTC}|%-5p|%t|%c{2}|%replace{%replace{%replace{%m}{(&lt;[^/]*?[pP]assword.*?&gt;).*?(&lt;/.*?[pPPasword].*?&gt;)}{$1********$2}}{(&lt;pw&gt;).*?(&lt;/pw&gt;)}{$1********$2}}{(&lt;newPW&gt;).*?(&lt;/newPW&gt;)}{$1********$2}|%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <DefaultRolloverStrategy max="7"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="nl.test.app.facade" level="debug" additivity="false">
            <AppenderRef ref="FACADE_LOG"/>
        </Logger>
        <Logger name="nl.test.app.auditadapter" level="debug" additivity="false">
            <AppenderRef ref="AUDIT_LOG"/>
        </Logger>
        <Logger name="nl.test.app.proces" level="debug" additivity="false">
            <AppenderRef ref="DEBUG_LOG"/>
        </Logger>
        <Root level="debug">
            <AppenderRef ref="ERROR_LOG" />
        </Root>
    </Loggers>
</Configuration>

在我自己的机器上,我将
log4j2.xml
的位置添加到类路径中。在测试服务器上,我尝试将位置添加到类路径,并通过
log4j.configurationFile
JavaVM参数进行设置。这两种情况下的结果是相同的:所有日志文件都是在启动时创建的,但只有根记录器(ERROR_LOG)中提到的一个日志文件将日志数据发送给它,其他日志文件保持为空。这告诉我至少Log4J2能够找到并读取配置文件。我尝试过切换根记录器中提到的appender。在这种情况下,日志数据被发送到该文件,所以它似乎与文件系统无关


所以问题是:为什么我的测试服务器上的日志文件保持为空(除了根记录器中提到的日志文件),但在我的开发机器上接收数据?

最后,在删除所有工作正常的日志文件后,应用程序工件中仍然有一个不正确的log4j 1.x JAR。在Log4J的调试日志中,您可能会看到一些错误或至少是一条线索,但事实并非如此。再说一遍,类路径问题(我想这是)可能很棘手