天天看點

tomcat7配置log4j解決catalina.out日志過大問題

tomcat預設安裝後,會每天會自動切割日志檔案,(catalina.2010-10-08.log、catalina.2010-10-09.log、catalina.2010-10-10.log)這樣的形式,但是他的catalina.out不清空,任其自由增長,時間長了系統性能急劇下降。

要解決catalina.out過大問題,網上有很多種方法,如:使用日志切割工具、或者自己寫定時腳本:

#!/bin/bash

cd `dirname $0`
d=`date +%Y%m%d`
d7=`date -d'7 day ago' +%Y%m%d`

cd ../logs/

cp catalina.out catalina.out.${d}
cat /dev/null > catalina.out
rm -rf catalina.out.${d7}      

對其日志進行切割每天生成一個檔案,并且删除7天前的檔案。

其次,還可以對tomcat進行log4j配置,使用log4j的日志“切割”方式。配置如下:

1)下載下傳與tomcat對應版本的tomcat-juli.jar 和 tomcat-juli-adapters.jar,或者tomcat-extras-juli-7.0.70.jar和tomcat-extras-juli-adapters-7.0.70.jar:

https://mvnrepository.com/artifact/org.apache.tomcat.extras
https://mvnrepository.com/artifact/org.apache.tomcat      

2)将log4j.jar 和 tomcat-juli-adapters.jar放到$CATALINA_HOME/lib目錄下;

3)将log4j.properties 放到$CATALINA_HOME/lib目錄下;

4)用新下載下傳的tomcat-juli.jar替換掉$CATALINA_HOME/bin/中的tomcat-juli.jar;(下載下傳的tomcat-juli.jar包含了所有Commons Logging實作,能夠發現log4j和配置)

5)删除$CATALINA_BASE/conf/logging.properties

6)修改 Tomcat 的 conf/context.xml 檔案,将<Context>改為<Context swallowOutput="true">

7)重新開機tomcat

log4j.rootLogger = INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
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.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
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.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
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.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

# Configure which loggers log to which appenders
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      

參考:

​​https://tomcat.apache.org/tomcat-7.0-doc/logging.html#Using_Log4j​​