1. 程式人生 > >log4j在tomcat下多個工程的log4j.properties配置

log4j在tomcat下多個工程的log4j.properties配置

關於tomcat下多個工程配置一個log4j.properties,達到輸出各自的日誌的問題,

經過實際工作的總結和調查,在這裡做出一個總結和備忘。

提起log4j的配置,我們常用的配置辦法是為每個工程建立一個log4j.properties檔案,並在其中寫入自己的輸出日誌的資訊。

但是我在工作中遇到一個問題,其實log4j.properties檔案的載入與專案引用的jar包有著不可分割的關係。

我遇到的兩種情況如下:

1、log4j.jar存在於每個工程的lib下

你的工程下的\WebRoot\WEB-INF\lib\路徑下存在自己專案需要的jar包,log4j.jar存在於此路徑下時,

當你的tomcat啟動時,使用的是工程各自路徑下的log4j.jar包來載入每個工程自己的log4j.properties。

這個時候每個專案都可以使用自己的工程下的WebRoot\WEB-INF\classes\log4j.properties配置,

輸出各自指定的日誌檔案。

2、log4j.jar不存在於每個工程的lib下,統一呼叫tomcat的lib下的log4j.jar

這個時候,你會發現多個工程的log4j.properties一次被載入,但是後加載的會覆蓋前面載入的配置內容。

導致所有的工程的log都打出在最後載入的工程的log4j.properties中設定的log檔案中。

這個時候解決辦法就是,把所有的工程的日誌配置在同一個log4j.properties檔案中。

然後將這個log4j.properties檔案放到tomcat的Tomcat 6.0\webapps\ROOT\WEB-INF\下。

例:A工程和B工程兩個部署在tomcat下的專案,log4j.properties的簡單設定。

log4j.rootLogger=INFO

#========================================================================
#向控制檯輸出log資訊
#========================================================================
log4j.category.com=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} %-5p %c %m%n

#========================================================================
# A專案log輸出配置  檔案大小到500KB時自動生成新log檔案,最大生成10個
#========================================================================
log4j.category.com.a
=INFO, ALOG log4j.appender.ALOG.File=D:/workspace/Aproject/log/a-web-log.log log4j.appender.ALOG=org.apache.log4j.RollingFileAppender log4j.appender.ALOG.MaxFileSize=500KB log4j.appender.ALOG.MaxBackupIndex=10 log4j.appender.ALOG.layout=org.apache.log4j.PatternLayout log4j.appender.ALOG.layout.ConversionPattern=%d{MM/dd HH:mm:ss.SSS} %-5p %c %m%n #======================================================================== # B專案log輸出配置 檔案大小到500KB時自動生成新log檔案,最大生成10個 #======================================================================== log4j.category.com.b=INFO, BLOG log4j.appender.BLOG.File=D:/workspace/Bproject/log/b-web-log.log log4j.appender.BLOG.=org.apache.log4j.RollingFileAppender log4j.appender.BLOG..MaxFileSize=500KB log4j.appender.BLOG..MaxBackupIndex=10 log4j.appender.BLOG..layout=org.apache.log4j.PatternLayout log4j.appender.BLOG..layout.ConversionPattern=%d{MM/dd HH:mm:ss.SSS} %-5p %c %m%n

關於log4j.properties具體的設定方式可參見其他文章的詳細講解,這裡不做贅述。

需要注意的是,紅字部分,是你的專案中需要輸出log部分程式碼的包名。

A工程的功能程式碼儲存的路徑:Aproject\src\com\a\

B工程的功能程式碼儲存的路徑:Bproject\src\com\b\

也就是說,每個專案在開發時,最好在com下面用不重複的資料夾名來區分,這樣才能區分輸出日誌時針對的工程。

工作中遇到的問題是最有價值的問題,我相信這也是我最寶貴的財富。

就算很簡單的問題,我想也有它的價值,也許會幫助到許多人。

選擇總結和整理,也恰恰是自己變得富有的第一步,希望我們都可以成為一個富有的人!