Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java eclipse中的log4j2.xml和log4j2-test.xml_Java_Xml_Eclipse_Classpath_Log4j2 - Fatal编程技术网

Java eclipse中的log4j2.xml和log4j2-test.xml

Java eclipse中的log4j2.xml和log4j2-test.xml,java,xml,eclipse,classpath,log4j2,Java,Xml,Eclipse,Classpath,Log4j2,我的eclipse类路径上有这两个日志文件,分别位于src/main/resources和src/test/resources中 问题在于log4j2 test.xml具有更高的优先级,并且在运行我的应用程序时始终是选择的配置文件。如何让eclipse在运行应用程序时忽略log4j2 test.xml并使用log4j2.xml,在运行单元测试时返回到log4j2 test.xml?您可以在junit setup()中执行下面的语句方法。此文件应位于运行此文件的包中,或者您可以提供此文件的完整路径

我的eclipse类路径上有这两个日志文件,分别位于
src/main/resources
src/test/resources


问题在于
log4j2 test.xml
具有更高的优先级,并且在运行我的应用程序时始终是选择的配置文件。如何让eclipse在运行应用程序时忽略
log4j2 test.xml
并使用
log4j2.xml
,在运行单元测试时返回到
log4j2 test.xml

您可以在junit setup()中执行下面的语句方法。此文件应位于运行此文件的包中,或者您可以提供此文件的完整路径

PropertyConfigurator.configure("log4j2-test.xml"); 

在log4j2中,您可以编写以下代码

org.apache.logging.log4j.LogManager ctx = (org.apache.logging.log4j.LogManager) LogManager.getContext(true);
ctx.setConfigLocation(LoggerTest.class.getClassLoader().getResource("log4j2-test.xml").toURI());

假设log4j2-test.xml在您的类路径中。

仅针对像我这样的人仍然有一些重大问题的情况。 一个有效的解决办法是:

  • 创建一个包含并提供log4jjar文件的插件MyLog4J
  • 在MyLog4J插件的Manifest.MF中添加“EclipseBuddyPolicy:registered”

  • 在定义实际应用程序(例如Entrypoint)的插件中,将log4j2.xml放在src文件夹中 并将“eclipseregisterbuddy:MyLog4J”添加到它的Manifest.MF中

eclipseregisterbuddy是允许log4j在启动期间找到log4j2.xml文件的关键步骤


现在,您可以在所有项目中重复使用MyLOG4J插件,并为每个应用程序创建一个单独的log4j2.xml文件。

您使用的是maven吗?是的,我使用的是maven。我通过将其添加到tomcat启动配置中解决了这个问题:-Dlog4j.configurationFile=“file:C:\blah…\src\main\resources\log4j2.xml”这是一个log4j-1.2 API,它不适用于log4j2。