为什么 log4j2 不生成日志文件?

use*_*118 5 logging log4j log4j2

我的任务是升级一个大型服务类型的java程序(不是我写的,第一次接触它),它有大量的开源库。我正在升级到 log4j2,它以前有 log4j,但我不知道它是否可以正常工作。

我根本没有收到日志文件。这是在使用 NetBeans 8 的本地开发环境中。我的类路径中有 log4j-api 和 log4j-core 2.9.0 文件。我的项目根目录中的 log4j2.xml 文件是:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
    <File name="FileAppender" fileName="DistEngine.log" immediateFlush="true" append="false" >
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>
</Appenders>
<Loggers>
    <Root level="ALL">
        <AppenderRef ref="FileAppender"/>
        <AppenderRef ref="Console"/>
    </Root>
</Loggers>
Run Code Online (Sandbox Code Playgroud)

类日志记录变量是(是的,类名是 Main,它扩展了父类):

private static final Logger MAINLOGGER = LogManager.getLogger(Main.class);
Run Code Online (Sandbox Code Playgroud)

该起始类的 main() 方法中的第一行是:

MAINLOGGER.info("entering listener main");
Run Code Online (Sandbox Code Playgroud)

我没有在项目根目录中获取 DistEngine.log 文件,也没有从 log4j2 到 stdout 的任何日志记录。我没有收到 log4j2 消息,指出它找不到配置文件。

配置文件、类变量和日志调用都是从该集合中的另一个程序复制的,其中日志记录工作正常。

我从一些开源类获取一些标准输出日志记录,主要是在 com.sun.enterprise.ee.cms.impl.jxta 和 com.sun.enterprise.ee.cms.impl.jxtmgmt 命名空间中。

我有一种感觉,开源日志记录可能与 log4j2 冲突,因为我复制代码的另一个程序工作正常。

谢谢。

编辑:更多分辨率详细信息:开源库 jar 文件 (jgroups) 之一包含具有有效设置的 log4j2.xml 文件。使用此配置文件而不是我的配置文件,因为该项目是在自定义源之前使用类路径中的 lib jar 配置的。我只是在设置了您建议的 log4j2.debug 属性后才发现这一点。

这个 jgroups 配置文件没有导致 log4j2 错误,但它也没有生成我可以找到的日志文件。

我的解决方案是将自定义源文件夹放在类路径中的 lib jar 之前,并且它有效。如果不将其转变为类路径顺序线程,在我看来,无论这个问题如何,自定义都应该放在第一位,但似乎 netbeans 默认首先是库 jar,然后是自定义。

Rem*_*pma 4

我没有看到配置文件有任何问题。我怀疑\xe2\x80\x99s没有日志文件的原因是Log4j2没有\xe2\x80\x99看到配置文件。

\n\n

默认情况下,Log4j2 在类路径中查找配置文件。\xe2\x80\x99 是首先要检查的事情。netbeans 是否在类路径中包含项目根目录?

\n\n

您还可以使用系统属性指定配置文件的路径-Dlog4j.configurationFile=path/to/log4j2.xml。\n请参阅https://logging.apache.org/log4j/2.x/faq.html#config_location

\n\n

您可以通过设置系统属性进一步排除配置故障log4j2.debug。请参阅https://logging.apache.org/log4j/2.x/faq.html#troubleshooting

\n\n

(另外,请确保您\xe2\x80\x99正在使用最新版本的Log4j2。)

\n