首頁 > 軟體

tomcat的catalina.out紀錄檔按自定義時間格式進行分割的操作方法

2022-04-01 19:02:43

預設情況下,tomcat的catalina.out紀錄檔檔案是沒有像其它紀錄檔一樣,按日期進行分割,而是全部輸出全部寫入到一個catalina.out,這樣日積月累就會造成.out紀錄檔越來越大,給管理造成了不便,為了實現像其它紀錄檔檔案一樣按日期歸檔,這裡我採用cronolog來完成紀錄檔分割。

一、安裝Cronolog

1.yum方式安裝

# yum install cronolog

2.下載壓縮包安裝

1. 下載(最新版本)
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

2. 解壓縮
tar zxvf cronolog-1.6.2.tar.gz
 
3. 進入安裝目錄
cd cronolog-1.6.2
4. 執行安裝
./configure
make
make install
5. 檢視是否安裝成功
which cronolog
結果:/usr/local/sbin/cronolog  (這個是cronolog的安裝路徑,後面會用到)

二、修改Tomcat下bin/catalina.sh檔案

修改要分隔的Tomcat的紀錄檔下bin/catalina.sh檔案,要修改的在290行。修改前先拷貝一份。
1. cp catalina.sh catalina.sh.bak
2. vim catalina.sh -c 417  或者  vim catalina.sh之後:417    (進入到catalina.sh的第417行。)

下面為需要修改的內容:標紅的是要修改的區域

修改為:
  shift
  # touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
      -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 &
 
  else
  fi

修改後,重啟Tomcat。可以看到更改已經生效。(看到catalina.out出現了catalina.2017-12-19.out等按照日期分類的輸出檔案說明設定成功)。

三、shell利用crontab自動清除紀錄檔

1.刪除檔案shell命令詳解

find 對應目錄 -mtime +天數 -name "檔名" -exec rm -rf {} ;
 
例子:
    find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} ;
 
說明:將/opt/soft/log/目錄下所有30天前帶".log"的檔案刪除。具體引數說明如下:
    find:linux的查詢命令,使用者查詢指定條件的檔案;
    /opt/soft/log/:想要進行清理的任意目錄;
    -mtime:標準語句寫法;
    +30:查詢30天前的檔案,這裡用數位代表天數;
    "*.log":希望查詢的資料型別,"*.jpg"表示查詢擴充套件名為jpg的所有檔案,"*"表示查詢所有檔案,這個可以靈活運用,舉一反三;
    -exec:固定寫法;
    rm -rf:強制刪除檔案,包括目錄;
    {} ; :固定寫法,一對大括號+空格++; 

2.建立shell指令碼即crontab計劃任務

# vim del-15-days-ago-logs.sh
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} ;
# chmod +x del-15-days-ago-logs.sh
# crontab -e
10 0 * * * /opt/soft/log/del-15-days-ago-logs.sh >/dev/null 2>&1

到此這篇關於tomcat的catalina.out紀錄檔按自定義時間格式進行分割的文章就介紹到這了,更多相關tomcat的catalina.out紀錄檔內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com