我有一个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 ......仍在研究解决方案
答案 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文件夹中。
由于