我有一个Maven项目,其中log4j2(2.9.0)和 /src/main/java/resources/log4j2.xml
中的配置文件。只要我留在Intellij,它可以正常工作,并且像配置一样记录。
如果我现在在终端中制作mvn clean install
(Ubuntu 14),然后在Intellij中启动程序的主要方法,我将遇到一个错误,它将找不到Log4j2配置文件:
错误状态记录器未找到log4j2配置文件。使用默认值 配置:仅记录到控制台的错误。设置系统属性 'log4j2.debug'显示log4j2内部初始化记录。
一旦我在Intellij Idea中制作Build -> Rebuild Project
,它将再次起作用。
我不太了解外部Maven构建如何使Intellij Idea混淆以不在本地源代码中使用.xml。
有什么想法?
我找到了解决方案。
Intellij将每个默认的资源复制到/target/class,这是Intellij实际从中获取log4j2.xml的地方。我的Maven Build并没有这样做,Intellij没有重建项目,因此找不到Log4j2.xml
我的解决方案是将log4j2.xml放在POM的资源部分中:
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}/classes</targetPath>
<includes>
<include>**/log4j2.xml</include>
</includes>
</resource>
</resources>