Apache Tomcat有一個相當煩人的問題,就是它會把system.out/system.err都輸出至catalina.out檔案中(預設目錄在$CATALINA_HOME/logs),且這一個catalina.out檔案並不會rotate,檔案會愈長愈大。
要切割此catalina.out的方法,可以使用cronolog幫忙做rotate(因為catalina.out在catalina.sh shell script中是透過 pipe到檔案去做的);還有一種方式是將catalina.out改用log4j輸出,以下就介紹這個方式的設定步驟:
- 執行/opt/tomcat6/bin/version.sh,確認tomcat的version。
- 於http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.37/bin/extras/(要根據步驟1的版號找出正確的網址)下載tomcat-juli.jar與tomcat-juli-adapters.jar,Upload至server上。
- 於log4j (需1.2之後版本,在此使用1.2.17)下載log4j-1.2.17.jar,Upload 至server上。
- 停止 tomcat
- 備份$CATALINA_HOME/bin/tomcat-juli.jar,複製下載的tomcat-juli.jar至此目錄
- 複製tomcat-juli-adapters.jar至$CATALINA_HOME/lib/目錄
- 複製log4j-1.2.17.jar至$CATALINA_HOME/lib/目錄
- 於$CATALINA_HOME/lib/目錄下,建立log4j.properties,範例內容如下:
log4j.rootLogger=INFO,rollingFile
log4j.appender.rollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rollingFile.File=${catalina.base}/logs/catalina
log4j.appender.rollingFile.Append=true
log4j.appender.rollingFile.Encoding=UTF-8
log4j.appender.rollingFile.DatePattern='.'yyyy-MM-dd'.out'
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p %c:%L - %m%n - 備份$CATALINA_HOME/conf/context.xml 將
- 啟動 tomcat
<Context>
改為
<Context swallowOutput="true">
您好,
回覆刪除我有一log4j的問題想要請教您
請問是否方便EMAIL給您呢?
謝謝
謝謝你的分享!
回覆刪除