Java eclipse中的log4j2.xml和log4j2-test.xml
我的eclipse类路径上有这两个日志文件,分别位于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()中执行下面的语句方法。此文件应位于运行此文件的包中,或者您可以提供此文件的完整路径
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中
现在,您可以在所有项目中重复使用MyLOG4J插件,并为每个应用程序创建一个单独的log4j2.xml文件。您使用的是maven吗?是的,我使用的是maven。我通过将其添加到tomcat启动配置中解决了这个问题:-Dlog4j.configurationFile=“file:C:\blah…\src\main\resources\log4j2.xml”这是一个log4j-1.2 API,它不适用于log4j2。