我在eclipse classpath中分别有src/main/resources
和src/test/resources
这两个日志文件。日志中的log4j2.xml和log4j2-test.xml
问题是log4j2-test.xml
具有更高的优先级,并且在运行我的应用程序时总是选择的配置文件。如何让eclipse在运行我的应用程序时忽略log4j2-test.xml
并使用log4j2.xml
,并在运行单元测试时回退到log4j2-test.xml
?
我在eclipse classpath中分别有src/main/resources
和src/test/resources
这两个日志文件。日志中的log4j2.xml和log4j2-test.xml
问题是log4j2-test.xml
具有更高的优先级,并且在运行我的应用程序时总是选择的配置文件。如何让eclipse在运行我的应用程序时忽略log4j2-test.xml
并使用log4j2.xml
,并在运行单元测试时回退到log4j2-test.xml
?
您可以在junit setup()方法中执行以下语句。该文件应该在您运行此文件的相同包中可用,或者您可以提供此文件的完整路径。
PropertyConfigurator.configure("log4j2-test.xml");
这是一个log4j-1.2 API,它确实不适用于log4j2。 – 2014-09-12 17:30:47
在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是在类路径中。
您使用的是maven吗? – cy3er 2014-09-12 11:35:05
是的,我使用的是maven。我通过将这添加到tomcat启动配置来解决问题:-Dlog4j.configurationFile =“file:C:\ blah ... \ src \ main \ resources \ log4j2.xml” – 2014-09-12 11:45:46