網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
修改前的 tomcat 都是將所有數(shù)據(jù)保存在一個(gè)日志文件 catalina.out 中,平時(shí)實(shí)驗(yàn)環(huán)境下沒(méi)有什么問(wèn)題,但是在生產(chǎn)環(huán)境中,由于數(shù)據(jù)量巨大,會(huì)導(dǎo)致日志查看困難,因此將日志通過(guò)某些方法進(jìn)行自動(dòng)分割,而修改后的 tomcat 將會(huì)按“日”保存日志文件,文件格式例如:catalina.2022-6-10.out
1、方法一:使用 cronolog
官網(wǎng):http://cronolog.org
RPM包下載方法:在rpmfind.net上搜索cronolog選擇對(duì)應(yīng)RPM包復(fù)制下載鏈接即可
下戟安裝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 安裝后所在目錄(驗(yàn)證安裝是否成功):
[root@localhost logs]# whereis cronolog
cronolog: /usr/sbin/cronolog /usr/share/man/man1/cronolog.1m.gz
編輯 bin/catalina.sh 文件(tomcat的啟動(dòng)文件):
1.找到下面行并把它用#注釋掉
touch "$CATALINA_BASE"/logs/catalina.out
在新 Tomcat7 的 bin/catalina.sh 文件要注釋的行是
touch "SCATALINA_OUT"
2.替換下面的行(有兩處,不過(guò)一般在-security 中的那一行不需要去關(guān)注,不妨兩處全替換了):
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 "&"
替換后該行的內(nèi)容與上面是一樣的
注:為什么 Tomcat7 后會(huì)有所不同,因?yàn)樵谒?catalina.sh 文件中有如下定義
CATALINA_OUT="$CATALINA_BASE" /logs/catalina.out
3.保存 catalina.sh 文件并重啟 Tomcat 即可
[root@localhost ~]# systemctl restart tomcat.service
查看日志分割結(jié)果:
[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
#可以看到已經(jīng)存在
2、方法二:使用 rotatelogs
`rotatelogg` 是 `apache` 自帶的工具
查看rotatelogs屬于哪個(gè)包(確認(rèn)是否包含在apache里面):
#通過(guò)觀察,確認(rèn)rotatelegs包含在apache包內(nèi),因此僅需要安裝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 安裝后所在目錄(驗(yàn)證安裝是否成功):
[root@localhost ~]# whereis rotatelogs
rotatelogs: /usr/sbin/rotatelogs /usr/share/man/man8/rotatelogs.8.gz
編輯 bin/catalina.sh 文件(tomcat的啟動(dòng)文件):
1.找到下面行并把它用#注釋掉
touch "$CATALINA_BASE"/logs/catalina.out
在新 Tomcat7 的 bin/catalina.sh 文件要注釋的行是
touch "SCATALINA_OUT"
2.替換下面的行(有兩處,不過(guò)一般在-security 中的那一行不需要去關(guān)注,不妨兩處全替換了):
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 &
#為了與上方區(qū)分,這里日志的名字格式中,日期的年、月、日沒(méi)有使用“-”隔開
在新 Tomcat7 的 bin/catalina.sh 中需要替換的行是
>> "$CATALINA_OUT" 2>&1 "&"
替換后該行的內(nèi)容與上面是一樣的
注:為什么 Tomcat7 后會(huì)有所不同,因?yàn)樵谒?catalina.sh 文件中有如下定義
CATALINA_OUT="$CATALINA_BASE" /logs/catalina.out
3.保存 catalina.sh 文件并重啟 Tomcat 即可
[root@localhost ~]# systemctl restart tomcat.service
查看日志分割結(jié)果:
[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
#可以看到已經(jīng)存在(日志格式為了區(qū)分,其中日期的年、月、日沒(méi)有使用“-”隔開,上方有提及)
3、方法三:使用腳本
Linux環(huán)境下切割日志腳本
將此腳本放到 tomcat 下的 bin 目錄,在 crontab中自動(dòng)執(zhí)行,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.$bsd5o550550j
echo "" > catalina.out
rm -rf catalina.out.${d7}
這里就不進(jìn)行演示了,如果需要自行測(cè)試
原文鏈接:https://blog.csdn.net/JohnnyG2000/article/details/125222850
相關(guān)推薦
- 2022-12-03 .Net?Core和RabbitMQ限制循環(huán)消費(fèi)的方法_實(shí)用技巧
- 2022-10-06 Redis中鍵和數(shù)據(jù)庫(kù)通用指令詳解_Redis
- 2022-05-19 ASP.NET?Core框架探索之Authentication的權(quán)限認(rèn)證過(guò)程解析_實(shí)用技巧
- 2022-02-20 Go語(yǔ)言中io包核心接口示例詳解_Golang
- 2022-09-18 IOS開發(fā)壓縮后圖片模糊問(wèn)題解決_IOS
- 2022-12-11 Rust中Cargo的使用詳解_Rust語(yǔ)言
- 2022-11-04 go-cqhttp環(huán)境配置及安裝過(guò)程_Golang
- 2022-07-11 Verilog中reg和SystemVerilog中l(wèi)ogic的區(qū)別
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支