1. 程式人生 > >Linux/Centos Tomcat 配置日誌切分以及腳本自動清理

Linux/Centos Tomcat 配置日誌切分以及腳本自動清理

ron ear 在服務器 新的 exec 很多 color name 發現

Tomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache,Sun和其他一些公司及個人共同開發而成。由於有了Sun的參與和支持,最新的Servlet和JSP規範總是能在Tomcat中得到體現,Tomcat 5支持最新的Servlet 2.4和JSP 2.0規範。因為Tomcat技術先進,性能穩定,而且免費,因而深受Java愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web應用服務器。
Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。學者來說,可以這樣認為,當在一臺機器上配置好Apache服務器,可運用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat時,它實際上作為一個與Apache獨立的進程單獨運行的。
訣竅是,當配置正確時,Apache為HTML頁面服務,而Tomcat實際上運行JSP頁面和Servlet。另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的的Servlet容器是Tomcat的的默認模式。不過,Tomcat的處理靜態HTML的能力不如Apache的服務器。目前Tomcat的最新版本為9.0。

在很多時候我們使用的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 配置日誌切分以及腳本自動清理