2013-07-03 212 views
1

我創建了一個Tomcat webapp項目。如果我在Tomcat庫中放置了log4j.xx.jar & log4j.properties,我得到了日誌文件。如果我把log4j.properties放在WEB-INF/classes中,我沒有得到日誌文件。我一次又一次地嘗試。 當我將log4j.xx.jar放入WEB-INF/lib並將log4j.properties放入WEB-INF/classes中時,我再次獲得它。爲什麼?邏輯是什麼?我應該在哪裏放log4j.jar?

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 
+0

WEB-INF/lib for .jar和.ini的類 – DevZer0

+0

類dir中的log4j.properties和lib中的* .jar dir – surfealokesea

+0

是否有官方描述? @surfealokesea – noodles

回答

2

兩個log4j.xx.jarlog4j.properties文件必須由同一個類加載器加載。 Tomcat lib文件由不同於WEB-INF/lib文件的類加載器加載。所以你必須將這兩個文件放在Tomcat的lib下,或者把這兩個文件都放在WEB-INF/lib下,以使其工作。

2

把log4j的jar文件在WEB-INF/lib中任何你喜歡的tomcat例如/ conf目錄

認沽log4j.properties。確保它在classpath中。

然後使用類加載器讀取log4j.properties。 (「相對路徑」);這是一個簡單的方法。

我不喜歡把東西放到tomcat/lib文件夾的想法。

首先,因爲tomcat上的不同應用程序可能會使用不同版本的log4j.jar。並且放入tomcat/lib會導致某些應用程序受到版本限制。

其次它不正確的把配置文件放在lib目錄中。它的正確位置是conf文件夾。