Log4j没有看到.properties文件

时间:2013-07-08 13:25:43

标签: java log4j

我使用log4j登录我的应用程序。在每个课程中,我都需要记录以下内容:

Properties props = new Properties();
    try {
        props.load(new FileInputStream("/log4j.properties"));
    } catch (Exception e){
        LOG.error(e);
    }
PropertyConfigurator.configure(props);

log4j.properties放置在文件夹/ src / main / resources /

路径/log4.properties由IDEA提供为复制引用。当我启动我的应用程序时,它显示FileNotFoundException

2 个答案:

答案 0 :(得分:4)

请勿使用FileInputStream

java.io及其配置使用当前工作目录,即执行JVM的目录,而不是代码工作区。

为了说明这一点,请考虑以下代码

class ReadFrmFile {
    public static void main(String args[]) {
        FileInputStream fin = New FileInputStream("intemp.txt");
    }
}

如果代码是从C:\TEMP执行的,则intemp.txt在这种情况下应该位于工作目录(C:/TEMP)中。如果不是,这将抛出FileNotFoundException。文件名的路径始终是绝对的,而不是相对的。

为了避免硬编码,最好的方法是将所有必需的文件放在类路径中并使用getResourceAsStream()加载它们。

    Properties props = new Properties();
    try {
        InputStream inStream = **YOUR_CLASS_NAME**.class.getResourceAsStream("/log4j.properties");
        props.load(inStream);
    } catch (Exception e){
        LOG.error(e);
    }
    PropertyConfigurator.configure(props);

答案 1 :(得分:1)

默认情况下,

log4j在类路径中查找log4j.properties文件,因此如果文件根目录中不存在,则不需要使用类PropertyConfigurator。类路径。

Spring MVC + Log4j Integration Example中,您会看到:

enter image description here