我正在从log4j 1.x升级到log4j 2,并将我的log4j.xml配置文件更新为新的log4j2.xml配置。我正在跑maven,spring和mule。
运行测试maven构建时,不会拾取log4j2.xml文件。但是,如果我重命名文件log4j2-test.xml,它会被拾取(例如,具有自定义PatternLayout的控制台记录器在第二种情况下正常工作,但在第一种情况下使用默认配置)。
为什么log4j会选择log4j2-test.xml而不是log4j2.xml?
答案 0 :(得分:3)
由于log4j2-test.xml
的{{3}}不是log4j2.xml
,您可能在类路径的某个位置有另一个log4j2配置文件,它会覆盖您的log4j2.xml
。在运行maven测试版本时,尝试通过执行以下代码来查找获取conf文件的位置:
for (String confFile : Arrays.asList("/log4j2-test.xml", "/log4j2.yaml", "/log4j2.yml", "/log4j2.json", "/log4j2.jsn", "/log4j2.xml")) {
URL resource = YourTestClass.class.getResource(confFile);
if (resource != null) {
System.out.format("found %s in: %s\n", confFile, resource.getFile());
}
}