人人IT網

人人IT網

當前位置: 主頁 > 服務器軟件 > Tomcat >

Catalina.out日志分割(Tomcat 7.0.69)

時間:2016-05-04 18:04來源:Internet 作者:Internet 點擊:
     項目業務原因, catalina.out每天增長幾近1個G, 先不說磁盤空間的占用, 排查日志時, 幾個GB, 甚至幾十個GB的文件打開都是個問題,
     項目業務原因, catalina.out每天增長幾近1個G, 先不說磁盤空間的占用, 排查日志時, 幾個GB, 甚至幾十個GB的文件打開都是個問題, 實在無可忍耐. 搜索一番, 無非2種方案:
1、用log4j接管tomcat的日志輸出; 2、用cronolog來分隔. 個人偏向第一種, 無他, 因其簡單, 且涉及幾率問題, 改動的地方少, 改動得越少, 出錯的幾率越少, 最重要的是log4j更加熟悉, 也就是說更好維護, so, why not.
   ok, 開動.
   step 1:
      需要为tomcat添加3個jar包, 分別为log4j-1.2.9.jar、tomcat-juli.jar、tomcat-juli-adapters.jar. 第一個jar無需多說, 只需稍微在網上找一下就能搜索出一大堆, 後面那2個jar, 可以在tomcat的官網上找得到, 下載的時候需要注意tomcat版本:http://www.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/extras/. 看到下載地址中的extras沒, 意思是說這個2個jar包不是在tomcat底下, 需要額外添加.
   step 2:
       把上面3個jar包拷貝到/opt/tomcat/lib目錄下(新下載的tomcat在這個lib目錄下是不會有這3個jar包的, 其他不敢說, 但是7.0.69這個版本是絕對沒有的).
   step 3:
       修改context.xml中的<Context>節點, 为它增加一個屬性swallowOutput, 並將其值为true,最終變成這样<Context swallowOutput="true">. 這個屬性很關鍵, 只有這样才能彻底拋棄tomcat的stdout. 嗯, 順便解析下這個屬性: 如果該值为true,System.out和System.err的輸出被重定向到web應用的logger; 如果沒有指定,缺省值为false.
   step 4:
       好了, 到了這一步, 該为log4j定義一個日志輸出的配置, 嗯, 就叫log4j.properties好了. 等等, 這個文件的名字還真不能胡改, 它名字必須是這個, 不然還需要改點別的東西, 至於改啥, 就不說了. 配置好了之後, 把log4j.properties文件放到/opt/tomcat/lib目錄下. 以下为log4j.properties的配置內容:
      
log4j.rootLogger = INFO, CONSOLE, CATALINA

log4j.logger.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping = INFO
log4j.logger.org.springframework.beans.factory.xml.XmlBeanDefinitionReader = INFO
#log4j.logger.org.hibernate.cfg.annotations.EntityBinder = WARN
#log4j.logger.org.hibernate.cfg.AnnotationBinder = WARN
#log4j.logger.org.hibernate.cfg.annotations.CollectionBinder = WARN
  
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] = INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] = INFO, HOST-MANAGER
log4j.logger.de.javakaffee.web.msm = ERROR
log4j.logger.org.apache.catalina.core = INFO, LOCALHOST
log4j.logger.org.apache.catalina.session = INFO, LOCALHOST
  
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern = %d [%t] %-5p %c - %m%n
 
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.file = ${catalina.base}/logs/catalina.
log4j.appender.CATALINA.encoding = UTF-8
log4j.appender.CATALINA.datePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.CATALINA.append = true
 
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.file = ${catalina.base}/logs/localhost.
log4j.appender.LOCALHOST.encoding = UTF-8
log4j.appender.LOCALHOST.datePattern = '.'yyyy-MM-dd'.log'
#log4j.appender.LOCALHOST.maxFileSize = 100MB
#log4j.appender.LOCALHOST.maxBackupIndex = 10
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.LOCALHOST.append = true
 
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.file = ${catalina.base}/logs/manager.
log4j.appender.MANAGER.encoding = UTF-8
log4j.appender.MANAGER.datePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.MANAGER.append = true
 
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.file = ${catalina.base}/logs/host-manager.
log4j.appender.HOST-MANAGER.encoding = UTF-8
log4j.appender.HOST-MANAGER.datePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.HOST-MANAGER.append = true       


       值得注意的是日志保存的文件名要保留"."號,否則不會分類.
   step 5:
      重命名/opt/tomcat/config/logging.properties, 變成/opt/tomcat/config/logging.properties.bak. 不建議刪除, 萬一以後要恢复呢
    step 6:
      重启服務, 然後晚上別關機, 第二天就可以看到好消息了. 好, 就這样.

      
From:ITEYE
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
欄目列表
推薦內容