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

时间:2014-09-12 11:31:46

标签: java xml eclipse classpath log4j2

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

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

仅仅是因为有人仍然像我一样遇到一些重大麻烦。 可行的解决方案是:

  • 创建一个插件MyLog4J,该插件包含并提供log4j jar文件。
  • 添加“ Eclipse-BuddyPolicy:已注册” MyLog4J插件的Manifest.MF

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

Eclipse-RegisterBuddy 是允许log4j在启动过程中找到log4j2.xml文件的关键步骤!

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

答案 2 :(得分:-1)

在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在您的类路径中。