maven在哪里搜索log4j.properties文件?

时间:2014-07-21 12:45:49

标签: java maven log4j

我在使用maven的log4j时遇到了问题。我有一个属性文件,即log4j.properties,我将该文件放在项目pom.xml存储的同一路径上。

的pom.xml

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
        <scope>test</scope>
</dependency>

我在test文件夹下的代码中使用了log4j。

代码

package com.paras.automationtest;

import org.apache.log4j.*;
import org.junit.Test;

public class AppTest
{
    @Test
    public void testLogger(){
   //PropertyConfigurator.configure("C:\\Users\\Desktop\\AutomationTest\\log4j.properties");
    Logger log = Logger.getLogger("parasLogger");
    log.debug("Hello, World!");
   }
}

我想知道,maven如何识别log4j.properties文件所在的位置?

在上面的场景中,如果我运行命令mvn test它会发出警告,请查看下面的屏幕截图以获取警告消息。

enter image description here

所以作为一种解决方法,我在我的代码中提供了log4j.properties的完整路径。我用过以下行:

PropertyConfigurator.configure("C:\\Users\\Desktop\\AutomationTest\\log4j.properties")

是否有必要使用上面的代码行,或者是否存在maven查找log4j.properties文件的特定目录?

2 个答案:

答案 0 :(得分:10)

该文件需要进入src/main/resources/src/test/resources/(如果您只需要进行单元测试)。

更长的解释:Maven将Java类路径拆分为源代码和资源(非Java事物,如属性文件,图像等)。主要原因是Maven可以为您过滤资源并使其更加安全,他们将资源放在与源不同的文件夹中。

答案 1 :(得分:1)

有很多与流行解决方案src/main/resourcessrc/test/resources相关的答案,但通常不会在您的应用程序中使用log4j.properties。 而不是在代码中提供硬编码log4j.properties,而是将其留给客户端(app-server,stage environment等)来配置所需的日志记录。 因此,我建议您对部署的具体细节保持谨慎,以便做出包含或排除您的maven程序集的log4j.properties的决定。

参考:If using maven, usually you put log4j.properties under java or resources?