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,然后是自定义。
我没有看到配置文件有任何问题。我怀疑\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
您可以通过设置系统属性进一步排除配置故障log4j2.debug。请参阅https://logging.apache.org/log4j/2.x/faq.html#troubleshooting
(另外,请确保您\xe2\x80\x99正在使用最新版本的Log4j2。)
\n