Logging 为什么不是';t log4j2是否生成日志文件?

Logging 为什么不是';t log4j2是否生成日志文件?,logging,log4j,log4j2,Logging,Log4j,Log4j2,我的任务是升级一个大型服务类型的java程序(不是我写的,第一次接触它),它有大量的开源库。我正在升级到log4j2,它以前有log4j,但我不知道它是否工作正常 我根本没有日志文件。这是在使用NetBeans 8的本地开发环境中实现的。我的类路径中有log4japi和log4jcore2.9.0文件。我在项目根目录中的log4j2.xml文件是: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WAR

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

我根本没有日志文件。这是在使用NetBeans 8的本地开发环境中实现的。我的类路径中有log4japi和log4jcore2.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>
这个起始类的main()方法的第一行是:

MAINLOGGER.info("entering listener main");
我的项目根目录中没有DistEngine.log文件,也没有从log4j2到stdout的任何日志记录。我没有收到log4j2消息,说明它找不到配置文件

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

我从一些开源类获得了一些stdout日志,主要是在com.sun.enterprise.ee.cms.impl.jxta和com.sun.enterprise.ee.cms.impl.jxtamgmt命名空间中

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

谢谢

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

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


我的解决方案是将自定义源文件夹放在类路径中的lib jar之前,这样做很有效。如果不将其转换为类路径顺序线程,在我看来,不管这个问题如何,自定义都应该放在第一位,但netbeans的默认设置是先使用库JAR,然后是自定义。

我认为配置文件没有任何问题。我怀疑没有日志文件的原因是Log4j2没有看到配置文件

默认情况下,Log4j2在类路径中查找配置文件。这是要检查的第一件事。netbeans是否在类路径中包含项目根目录

您还可以使用系统属性
-Dlog4j.configurationFile=path/to/log4j2.xml
指定配置文件的路径。 看

通过设置系统属性
log4j2.debug
,可以进一步排除配置故障。看


(另外,确保您使用的是最新版本的Log4j2。)

简短回答:是的,类路径问题!谢谢,请在我的原始帖子末尾为可能遇到这种情况的其他人提供更长的答案。什么?Jgroups jar是否包含log4j2.xml文件?太可怕了!这应该作为一个bug报告给jgroup维护人员!这迫使您始终确保jgroups jar是最后加载的,或者它们的配置会覆盖您的配置。。。他们在想什么?我在想也许我的前任出于某种原因把它放进了他们的jar中,但我刚刚从他们的存储库下载了我项目中的jgroups版本(3.6.0最终版),log4j2.xml文件就在那里。再次感谢。
MAINLOGGER.info("entering listener main");