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