我应该把log4j.jar放在哪里?

时间:2013-07-03 08:42:14

标签: java log4j

我创建了一个Tomcat webapp项目。如果我把 log4j.xx.jar& log4j.properties 在Tomcat lib中,我得到了日志文件。如果我把log4j.properties放在WEB-INF / classes中,我就不会得到日志文件。我一次又一次地尝试。 当我将log4j.xx.jar放入WEB-INF / lib并将log4j.properties放入WEB-INF / classes 时,我再次得到它。为什么?什么是逻辑?

log4j.rootLogger=INFO,A1, A2
#org.apache.log4j.ConsoleAppender
log4j.appender.A1=org.apache.log4j.FileAppender 
log4j.appender.A1.File=D:\\Tomcat2\\logs\\monitor.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

2 个答案:

答案 0 :(得分:2)

log4j.xx.jarlog4j.properties文件都必须由同一个类加载器加载。 Tomcat lib文件由与WEB-INF / lib文件不同的类加载器加载。因此,您必须将两个文件放在Tomcat lib下,或者将这两个文件放在WEB-INF / lib下,以使其正常工作。

答案 1 :(得分:2)

将log4j jar文件放在WEB-INF / lib

将log4j.properties放在任何你喜欢的位置,例如tomcat / conf。确保它在classpath中。

然后使用类加载器读取log4j.properties。

YourClass.class.getClassLoader()。getResourceAsStream(“relative path”);

我不喜欢把东西放到tomcat / lib文件夹中。

首先,因为tomcat上的不同应用程序可能使用不同版本的log4j.jar。放入tomcat / lib会导致某些应用程序出现版本错误。

其次,将配置文件放在lib目录中是不对的。它的正确位置是conf文件夹。