找不到Log4J属性文件

时间:2011-05-30 15:16:54

标签: java file properties log4j

我有一个Java项目已添加到Web项目的Java构建路径中。

在第一个Java项目中,我将Log4J JAR文件添加到Java Build Path,并且由于此项目已添加到Web项目的Java Build Project中,因此JAR文件也自动添加到Web项目Java构建路径中。

在Web项目中,我有一个Web服务,它实例化一个Java项目类。该类有一个简单的Logger,它可以正常工作。

现在,我正在尝试创建一个名为log4j.properties的属性文件来配置Logger,Appender和LayoutPattern。

每当我尝试调用实例化类的方法时,我都会在控制台上收到此错误:

log4j:错误无法读取配置文件[log4j.properties]。

我做错了什么?

这是log4j属性文件:

log4j.rootLogger=DEBUG, CA

log4j.appender.CA=org.apache.log4j.ConsoleAppender 
log4j.appender.CA.layout=org.apache.log4j.PatternLayout 
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

抱歉,这是一个误报......

就像我说的那样,实例化记录器的类所在的项目被添加为定义Web服务的主项目的依赖项。

结果是项目发布在一个JAR文件上,并且我提到了我提到的解决方案:

PropertyConfigurator.configure(getClass()。getProtectionDomain()。getCodeSource()。getLocation()。getPath()+“log4j.properties”);

我得到了一条路径:

C:/project_path.jar/log4j.properties

显然,找不到有形文件...

Sory ......仍在研究解决方案

4 个答案:

答案 0 :(得分:4)

如果使用log4j 2.x,则需要一个名为log4j2.xml的文件。

log4j.properties不会这样做。

答案 1 :(得分:3)

如果使用解压缩的WAR,请将log4j.properties文件放在classes目录中,否则将其放在src文件夹(java类的根文件夹)中。

答案 2 :(得分:1)

我找到解决此问题的唯一方法是将log4j.properties文件放在src根文件夹中。

然后在实例化记录器的类上,使用以下行:

PropertyConfigurator.configure( “log4j.properties”)

......必须改为:

PropertyConfigurator.configure(getClass()。getProtectionDomain()。getCodeSource()。getLocation()。getPath()+“log4j.properties”);

最后找到了文件。

感谢您的见解Pål

答案 3 :(得分:1)

好的,有时显而易见的答案是你最不期望的答案。

事实证明,我只需要删除PropertyConfigurator.configure(xxx)行并将log4j.properties文件放在依赖项目的src文件夹中。

由于