Tomcat 修改日志輸出配置 定期刪除日志


tomcat的下的日志catalina.out 和 qc.log瘋狂增長,以下是解決辦法


我生產環境tomcat版本

Server version: Apache Tomcat/7.0.35
Server number:  7.0.35.0
OS Name:        Linux
OS Version:     2.6.18-194.el5
Architecture:   amd64
JVM Version:    1.7.0_13-b20



一、catalina.out

1.修改日志輸出級別(未驗證)

位置 conf/logging.properties
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.


修改日志級別  將FINE 改為OFF,或者WARNING;
每類日志的級別分為如下 7 種:
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value)




2.將日志輸出到 /dev/dull
查找一下在 tomcat/bin/catalina.sh 中相關配置   
 if [ -z "$CATALINA_OUT" ] ; then
  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
……
 touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
      -Djava.security.manager \
      -Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
      -Dcatalina.base=\"$CATALINA_BASE\" \
      -Dcatalina.home=\"$CATALINA_HOME\" \
      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"


  else
    eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $JAVA_OPTS $CATALINA_OPTS \
      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
      -Dcatalina.base=\"$CATALINA_BASE\" \
      -Dcatalina.home=\"$CATALINA_HOME\" \
      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"
修改以上代碼中的
>> "$CATALINA_OUT" 2>&1 &

>> /dev/null 2>&1 &





3.分割后清空日志
使用cronolog工具切割日志
下載安裝cronolog


修改tomcat/bin/catalina.sh 中相關配置  (參照2中代碼)
注釋掉
#  touch "$CATALINA_OUT"
修改以上代碼中的
>> "$CATALINA_OUT" 2>&1 &

>> | /bin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &


重啟tomcat

刪除日志參考 二 中腳本





4.手動刪除
關閉tomcat。手動刪除日志,重啟  







二、定期刪除 日志

直接腳本刪除,只保留最近三天的某種日志

#! /bin/bash
logdir=/usr/local/tomcat/webapps1
cd ${logdir}
declare -i filesum=`ls qc.log.* | wc -l`
declare -i delnum=$filesum-3
if [ "${delnum}" -ge 1 ];then
rm -rf `ls -tr qc.log.* | head -${delnum}`
fi
~

 

 

 

刪除7天前的所有日志(注意兩種日志格式)

 
         
#! /bin/bash
find /usr/local/apache-tomcat-8.5.28/logs/ -mtime +7 -name "*.log" -exec rm -rf {} \;
find /usr/local/apache-tomcat-8.5.28/logs/ -mtime +7 -name "*.txt" -exec rm -rf {} \;

 

find:linux的查找命令,用戶查找指定條件的文件;

/usr/local/apache-tomcat-8.5.28/logs/ :想要進行清理的任意目錄;

-mtime:標准語句寫法;

+30:查找30天前的文件,這里用數字代表天數;

-mtime -n +n 
按照文件的更改時間來查找文件,
- n表示文件更改時間距現在n天以內,
+ n表示文件更改時間距現在n天以前。 find / -mtime -5 –print 在系統根目錄下查找更改時間在5日以內的文件 find /var/adm -mtime +3 –print 在/var/adm目錄下查找更改時間在3日以前的文件

 

"*.log":希望查找的數據類型,"*.jpg"表示查找擴展名為jpg的所有文件,"*"表示查找所有文件,這個可以靈活運用,舉一反三;

find 是我們很常用的一個Linux命令,一般查找出來的結果還會有進一步的操作,這個時候exec的作用就顯現出來了。

  exec解釋:

  -exec  參數后面跟的是 command 命令,它是以“;”為結束標志的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠。  

  {} 花括號代表前面find查找出來的文件名。

 

 

寫個腳本基本涵蓋tomcat/log 下所有logs

#! /bin/bash
find /usr/local/tomcat/apache-tomcat-8.5.28/logs/ -mtime +7 -name "*.log" -exec rm -rf {} \;
find /usr/local/tomcat/apache-tomcat-8.5.47/logs/ -mtime +7 -name "*.txt" -exec rm -rf {} \;
cat /dev/null > /usr/local/tomcat/apache-tomcat-8.5.47/logs/catalina.out

 

 

 

 

 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM