我目前正在Netbeans中使用sl4fj和log4j2编写一个小型Maven Java应用程序。在生产环境中部署java属性log4j.configurationFile
时,我无法使用它。因此,我希望log4j2搜索并找到我的项目中的属性文件。我在谷歌上搜索了一下,没有运气,尝试了以下选项;
将log4j2.xml添加到src/main/resources文件夹中,并使用maven配置(pom.xml)将其包含在jar中。这实际上不包括in in类路径,而是将xml添加到类路径中的一个位置。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>com/reddipped/jsonlogger_2</targetPath>
<includes>
<include>log4j2.xml</include>
</includes>
</resource>
</resources>
</build>
更改了项目属性->操作->运行项目中的类路径,以包含xml文件
exec.args=-classpath %classpath:/Users/petervannes/NetBeansProjects/JSONLogger_2/log4j2.xml ${packageClassName}
还有其他选择吗?这是一个maven项目,所以我不能在项目属性中添加jar。
—Update 1—
我在pom.xml中添加了maven.test.additionalClasspath属性,包括log4j2.xml。并添加了一个简单的JUnit测试。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<maven.test.additionalClasspath>${project.basedir}/src/test/java/log4j2.xml</maven.test.additionalClasspath>
</properties>
当使用-X参数执行Maven清理和构建时,日志报告
properties used {java.vendor=Oracle Corporation, sun.java.launcher=SUN_STANDARD ....., maven.test.additionalClasspath=/Users/petervannes/NetBeansProjects/JSONLogger_2/src/test/java/log4j2.xml, maven.compiler.target=1.6
仍然得到log4j配置文件未找到的错误。
Running com.reddipped.test.JSONLoggerTest
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
本页描述了log4j用来查找配置的方法。
据此,你应该把你的log4j2.xml
文件放在项目的默认包中。