Linux/Centos Tomcat 配置日誌切分以及腳本自動清理
Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。學者來說,可以這樣認為,當在一臺機器上配置好Apache服務器,可運用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat時,它實際上作為一個與Apache獨立的進程單獨運行的。
在很多時候我們使用的Tomcat的時候,Tomcat的控制臺日誌會存放在Tomcat的安裝目錄下的日誌文件夾下,日誌文件名為catalina.out中,
這個日誌文件如果不清理的話,會一直增長,在我以前的公司,由於疏忽,導致在生產上的這個日誌增長到了好幾十個GB,有了錯誤要看日誌,根本打不開,當時使用的Linux的SED命令截取的日誌,不過比較麻煩,後來經過看了一下網上的文章,發現這個日誌是可以切分的,所以下面就給大家講解一下如何切割日誌,並且附帶了腳本自動清理。
Tomcat的日誌切分配置
上傳的cronolog-1.6.2.tar.gz,到Linux的服務器的/software/目錄下,文中涉及到的軟件包,可以自己百度下載,或者加最下方微信,我免費發給你也可以
#cd /software/
#tar -zxvf cronolog-1.6.2.tar.gz
#cd cronolog-1.6.2
#./configure
#make
#make install
安裝完之後呢我們使用命令查看命令路徑
#which cronolog
如圖所示:命令路徑在:在/usr/local/sbin/cronolog
使用tomcat用戶修改tomcat腳本如果你的tomat是用root用戶啟動,那麽直接用root就好,但是生產環境起應用不建議用root用戶,存在風險,只是建議。
修改tomcat/bin/catalina.sh(保險起見,修改之前先備份一下)
#touch "$CATALINA_OUT"
if[ "$1" = "-security" ] ; then
if [ $have_tty -eq 1 ]; then
echo "Using Security Manager"
fi
shift
eval "\"$_RUNJAVA\"""\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $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 2>&1 \#這行是新添加的
| / usr / local / sbin / cronolog“$ CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> / dev / null&#這行是新添加的
#org.apache.catalina.startup.Bootstrap“$ @”start \#這行原來有,註釋掉
#>>“$ CATALINA_OUT”2>&1“&”#這行原來,有註釋掉
else
eval“\”$ _ RUNJAVA \“”“\”$ LOGGING_CONFIG \“”$ LOGGING_MANAGER $ 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 2>&1 \#這行是新添加的
| / usr / local / sbin / cronolog“$ CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> / dev / null& #這行是新添加的
#org.apache.catalina.startup.Bootstrap“$ @”start \#這行原來有,註釋掉
#>>“$ CATALINA_OUT”2>&1“&”#這行原來有,註釋掉
修改完之後重啟把tomat,就會生成一個以當天日期為後綴的問件,如下圖所示:
日誌切割完成後,我們就可以做日誌清理了下面是日誌清理腳本
#!/bin/bash
#clear tomcat logss
DOMAIN_HOME =“/ app / tomcat” #定義tomcat所在路徑
LogFileName = catalina.date +%Y-%m-%d -d‘-5 days‘
.out #處理多少天之前的tomcat日誌可以自定義
cd $ {DOMAIN_HOME} /logs
if [-f $ {DOMAIN_HOME}/logs/catalina.date +%Y-%m-%d -d‘-1 days‘
.out] #壓縮多少天之前的日誌
then
if [-f $ {DOMAIN_HOME}/logs/${LogFileName}]
the
/usr/bin/bzip2 ${DOMAIN_HOME}/logs/${LogFileName}
/usr/bin/find . -name“*”-type f -mtime +21 -exec rm -rf {} \; #刪除21天前的文件
fi
fi
exit 0
腳本定義好以後,我們把腳本放在服務器目錄上的/root/scripts/目錄下,叫做clear_tomcat.sh
把腳本內容復制進clear_tomcat.sh文件裏,使用命令:chmod 755 clear_tomcat.sh給執行權限
然後呢,我們定義一個計劃任務
#crontab -e
加入下面一行
30 22 * / bin / sh /root/scripts/clear_tomcat.sh >> / dev / null&
然後保存退出就可以了,上面的意思是每天晚上十點半的時候執行腳本,請缺人的crond服務在運行中,腳本才可以正常運行
這樣的話一天一個文件,如果發生錯誤看後臺日誌也好查找一些,而且不需要擔心日誌文件一直增長的問題。
如果對此文有什麽問題的話,請加下面微信一起探討
Linux/Centos Tomcat 配置日誌切分以及腳本自動清理