我应该把log4j.jar放在哪里



我创建了一个Tomcat Web应用程序项目。如果我把log4j..xx.jar&log4j.properties在Tomcat库中,我得到了日志文件。如果我把log4j.properties放在WEB-INF/类中,我就不会得到日志文件。我一次又一次地尝试当我把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

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

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

将log4j.properties放在任何你喜欢的地方,例如tomcat/conf。确保它在类路径中。

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

YourClass.class.getClassLoader().getResourceAsStream("相对路径");

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

首先是因为tomcat上的不同应用程序可能使用不同版本的log4j.jar。而放入tomcat/lib会导致一些应用程序的版本冲突。

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

最新更新