1. 程式人生 > 其它 >tomcat下日誌增長處理方式

tomcat下日誌增長處理方式

前言:在tomcat的環境下,日誌會隨時間的增長而變得龐大,有時候甚至有幾十G的大小,開啟檢視很不方便,所以這裡對tomcat的catalina.out日誌進行分割,切割工具用的cronolog,並且定期刪除之前的一些日誌,保障記憶體大小。

環境:centos7伺服器,tomcat版本是8以上(其他版本可能會有不同)

1.安裝cronolog(有的伺服器自帶這個工具)

yum install -y cronolog httpd

2.配置tomcat的切割檔案,只用配置tomcat目錄下的catalina.sh檔案即可

編輯catalina.sh,在tomcat的bin目錄下

vim /opt/tomcat2/bin/catalina.sh

修改三處:

(1).找到

if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi

修改為

if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/%Y-%m-%d.catalina.out
fi

就是給logs目錄下的catalina.out用日期分割

(2).註釋掉

touch "$CATALINA_OUT"

(3).找到

org.apache.catalina.startup.Bootstrap "$@" start \

"$CATALINA_OUT" 2>&1 "&"

修改為:

org.apache.catalina.startup.Bootstrap "$@" start 2>&1
| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null&

org.apache.catalina.startup.Bootstrap "$@" start 2>&1
| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null&

注意:這裡的if判斷裡面有兩處,都改了,把之前的那個儘量不要註釋,直接刪除,然後替換成下面的程式碼,不過你可以先註釋掉試一下,一般也不會錯,我在測試的時候可能是註釋的不規範,總是執行不成功,後來就把它刪除了。然後:wq儲存退出以後,再重啟伺服器檢視啟動正常,不知道為什麼,有時候剛配置完重啟失敗,但是,我還是重新把之前的程式碼刪除再複製,重複幾次就成功了,可能是我的程式碼不規範。有時複製程式碼框裡面的程式碼報錯,可以複製底下那行程式碼。

重啟後截圖:

紅框部分輸出說明配置成功,有的啟動方式不一樣,效果不一樣,具體看程式碼是否生效是去看看日誌檔案是否分割

3.檢視是否分割成功

進入tomcat的logs目錄

cd /opt/tomcat2/logs
ls

看到這樣的檔案就說明成功切割了。

4.定期刪除

linux自帶crontab定時任務工具,直接拿來使用,設定每天凌晨00:00執行刪除任務,刪除一週前的日誌檔案

(1).建立一個sh的指令碼,用於執行刪除,我把它放在了/opt/tomcat/bin目錄下,方便管理

cd /opt/tomcat2/bin
vim auto_del_log.sh

(2).將下面程式碼複製進去,:wq儲存退出

!/bin/sh

find /opt/tomcat2/logs/ -mtime +7 -name ".out" -exec rm -rf {} ;
find /opt/tomcat2/logs/ -mtime +7 -name "
.out" -exec rm -rf {} ;

(3).製作定時任務

crontab -e #直接這個該命令,新增一個定時任務計劃

然後在裡面新增如下程式碼:

00 00 * * * /opt/tomcat2/bin/auto_del_log.sh >/dev/null 2>&1

這樣就設定成功了。每天凌晨回去執行tomcat2/bin,目錄下的autoa-del_log.sh的shell指令碼執行清除任務。

(4).檢視定時任務

crotab -l

日誌分割和定期刪除完畢!