Google Analytics

2014年3月26日 星期三

Tomcat6 rotate日誌檔catalina.out的方式


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輸出,以下就介紹這個方式的設定步驟:
  1. 執行/opt/tomcat6/bin/version.sh,確認tomcat的version。
  2. http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.37/bin/extras/(要根據步驟1的版號找出正確的網址)下載tomcat-juli.jar與tomcat-juli-adapters.jar,Upload至server上。
  3. log4j (需1.2之後版本,在此使用1.2.17)下載log4j-1.2.17.jar,Upload 至server上。
  4. 停止 tomcat
  5. 備份$CATALINA_HOME/bin/tomcat-juli.jar,複製下載的tomcat-juli.jar至此目錄
  6. 複製tomcat-juli-adapters.jar至$CATALINA_HOME/lib/目錄
  7. 複製log4j-1.2.17.jar至$CATALINA_HOME/lib/目錄
  8. 於$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
  9. 備份$CATALINA_HOME/conf/context.xml

  10. <Context>
    改為
    <Context swallowOutput="true">

  11. 啟動 tomcat

2 則留言:

  1. 您好,
    我有一log4j的問題想要請教您
    請問是否方便EMAIL給您呢?
    謝謝

    回覆刪除