1. 程式人生 > >tomcat7 配置log4j 進行日誌分割

tomcat7 配置log4j 進行日誌分割

在tomcat的使用中,tomcat的日誌catalina.out會無限增加,通常一段時間不管就會到幾個G,當其太大後,會影響到tomcat的啟動,而分割日誌的方法有很多,這裡記錄一下利用log4j進行日誌分割的方法。

環境:

Centos7

JDK-1.8

Tomcat-7.0.79

1. 要使用log4j接管日誌,需要三個tomcat的jar包,如下L

log4j-1.2.17.jar

tomcat-juli.ja

tomcat-juli-adapters.jar

下載後,將這三個jar包,放到tomcat根目錄下的lib資料夾內。然後再將tomcat-juli.jar 複製一份到tomcat根目錄的bin目錄下,覆蓋原來的jar包。

2. 配置log4j的配置檔案,用來自定義日誌輸出。再tomcat根目錄的lib資料夾內新建log4j.properties 檔案,進行配置:

vim {tomcat-dir}/lib/log4j.properties
log4j.rootLogger=INFO, CATALINA  
  
# Define all the appenders  
log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.CATALINA.File={tomcat-dir}/logs/catalina.out   # 自定義日誌輸出目錄和檔案。  
log4j.appender.CATALINA.Append=true  
log4j.appender.CATALINA.Encoding=UTF-8  # 這裡UTF-8後面不能有空格,下同
# Roll-over the log once per day  
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd  
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={tomcat-dir}/logs/localhost  
log4j.appender.LOCALHOST.Append=true  
log4j.appender.LOCALHOST.Encoding=UTF-8  
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd  
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={tomcat-dir}/logs/manager  
log4j.appender.MANAGER.Append=true  
log4j.appender.MANAGER.Encoding=UTF-8  
log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd  
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={tomcat-dir}/logs/host-manager  
log4j.appender.HOST-MANAGER.Append=true  
log4j.appender.HOST-MANAGER.Encoding=UTF-8  
log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd  
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  
# 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  


3.修改tomcat配置檔案

vim {tomcat-dir}/conf/context.xml
<Context swallowOutput="true">  # 將<Context>改為這樣,新增一個引數swallowOutput="true"

4. 如過指定的日誌輸出位置不是tomcat根目錄內的logs,則需要修改配置檔案,如果是則不用修改。

vim {tomcat-dir}/conf/server.xml
 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />    ## directory 改為你指定的日誌輸出目錄。


5. 刪除或更名原日誌配置檔案,這樣就讀取不到原日誌配置檔案。

mv {tomcat-dir}/conf/logging.properties {tomcat-dir}/conf/logging.properties.backup 


OK,到此,日誌分割的配置完成,重啟tomcat,則會使用新的日誌配置檔案進行,日誌輸出。