首頁 > 軟體

Tomcat紀錄檔自動分割的三種方法

2022-07-27 18:03:12

修改前的 tomcat 都是將所有資料儲存在一個紀錄檔檔案 catalina.out 中,平時實驗環境下沒有什麼問題,但是在生產環境中,由於資料量巨大,會導致紀錄檔檢視困難,因此將紀錄檔通過某些方法進行自動分割,而修改後的 tomcat 將會按“日”儲存紀錄檔檔案,檔案格式例如:catalina.2022-6-10.out

1、方法一:使用 cronolog

官網:http://cronolog.org

RPM包下載方法:在rpmfind.net上搜尋cronolog選擇對應RPM包複製下載連結即可

下戟安裝cronolog:

[root@localhost ~]# yum install https://rpmfind.net/linux/epel/7/x86_64/Packages/c/cronolog-1.6.2-14.el7.x86_64.rpm -y

檢視 cronolog 安裝後所在目錄(驗證安裝是否成功):

[root@localhost logs]# whereis cronolog
cronolog: /usr/sbin/cronolog /usr/share/man/man1/cronolog.1m.gz

編輯 bin/catalina.sh 檔案(tomcat的啟動檔案):

1.找到下面行並把它用#註釋掉
touch "$CATALINA_BASE"/logs/catalina.out
在新 Tomcat7 的 bin/catalina.sh 檔案要註釋的行是
touch "SCATALINA_OUT"

2.替換下面的行(有兩處,不過一般在-security 中的那一行不需要去關注,不妨兩處全替換了):
org.apache.catalina.startup.Bootstrop "$@" start 
    >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
修改為
org.apache.catalina.startup.Bootstrap "$@" start 
2>&1 | /usr/local/sbin/cronolog "$CATALINA_BASE" /logs/catalina-%Y-%m-%d.out>>/dex/null &

在新 Tomcat7 的 bin/catalina.sh 中需要替換的行是
>> "$CATALINA_OUT" 2>&1 "&"
替換後該行的內容與上面是一樣的

注:為什麼 Tomcat7 後會有所不同,因為在它的 catalina.sh 檔案中有如下定義
CATALINA_OUT="$CATALINA_BASE" /logs/catalina.out

3.儲存 catalina.sh 檔案並重啟 Tomcat 即可
[root@localhost ~]# systemctl restart tomcat.service

檢視紀錄檔分割結果:

[root@localhost ~]# ll -d /usr/local/tomcat/logs/catalina-2022-06-10.out
-rw-r--r-- 1 tomcat tomcat 106331 Jun 10 16:51 /usr/local/tomcat/logs/catalina-2022-06-10.out
#可以看到已經存在

2、方法二:使用 rotatelogs

`rotatelogg` 是 `apache` 自帶的工具

檢視rotatelogs屬於哪個包(確認是否包含在apache裡面):

#通過觀察,確認rotatelegs包含在apache包內,因此僅需要安裝httpd即可順帶安裝rotatelegs

[root@localhost logs]# yum whatprovides */rotatelogs
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.dgut.edu.cn
 * extras: mirrors.dgut.edu.cn
 * updates: mirrors.dgut.edu.cn
httpd-2.4.6-95.el7.centos.x86_64 : Apache HTTP Server
Repo        : base
Matched from:
Filename    : /usr/sbin/rotatelogs

httpd-2.4.6-97.el7.centos.x86_64 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /usr/sbin/rotatelogs

httpd-2.4.6-97.el7.centos.1.x86_64 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /usr/sbin/rotatelogs

httpd-2.4.6-97.el7.centos.2.x86_64 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /usr/sbin/rotatelogs

httpd-2.4.6-97.el7.centos.4.x86_64 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /usr/sbin/rotatelogs

httpd-2.4.6-97.el7.centos.5.x86_64 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /usr/sbin/rotatelogs

安裝httpd:

[root@localhost ~]# yum install httpd -y

檢視 rotatelogs 安裝後所在目錄(驗證安裝是否成功):

[root@localhost ~]# whereis rotatelogs
rotatelogs: /usr/sbin/rotatelogs /usr/share/man/man8/rotatelogs.8.gz

編輯 bin/catalina.sh 檔案(tomcat的啟動檔案):

1.找到下面行並把它用#註釋掉
touch "$CATALINA_BASE"/logs/catalina.out
在新 Tomcat7 的 bin/catalina.sh 檔案要註釋的行是
touch "SCATALINA_OUT"

2.替換下面的行(有兩處,不過一般在-security 中的那一行不需要去關注,不妨兩處全替換了):
org.apache.catalina.startup.Bootstrop "$@" start 
    >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
修改為
org.apache.catalina.startup.Bootstrap "$@" start 
2>&1 | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina-%Y%m%d.out 86400 480 &
#為了與上方區分,這裡紀錄檔的名字格式中,日期的年、月、日沒有使用「-」隔開

在新 Tomcat7 的 bin/catalina.sh 中需要替換的行是
>> "$CATALINA_OUT" 2>&1 "&"
替換後該行的內容與上面是一樣的

注:為什麼 Tomcat7 後會有所不同,因為在它的 catalina.sh 檔案中有如下定義
CATALINA_OUT="$CATALINA_BASE" /logs/catalina.out

3.儲存 catalina.sh 檔案並重啟 Tomcat 即可
[root@localhost ~]# systemctl restart tomcat.service

檢視紀錄檔分割結果:

[root@localhost ~]# ll -d /usr/local/tomcat/logs/catalina-20220610.out
-rw-r--r-- 1 tomcat tomcat 105380 Jun 10 17:22 /usr/local/tomcat/logs/catalina-20220610.out
#可以看到已經存在(紀錄檔格式為了區分,其中日期的年、月、日沒有使用「-」隔開,上方有提及)

3、方法三:使用指令碼

Linux環境下切割紀錄檔指令碼

將此指令碼放到 tomcat 下的 bin 目錄,在 crontab中自動執行,shell指令碼如下:
#!/bin/bash
cd `dirname $0`
d=`date +%Y-%m-%d`
d7=`date -d'7 day ago' +%Y-%m-%d'

cd ../logs/

cp catalina.out catalina.out.${d}
echo "" > catalina.out
rm -rf catalina.out.${d7}

這裡就不進行演示了,如果需要自行測試

到此這篇關於Tomcat紀錄檔自動分割的三種方法的文章就介紹到這了,更多相關Tomcat紀錄檔自動分割內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


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