修改前的 tomcat 都是将所有数据保存在一个日志文件 catalina.out 中,平时实验环境下没有什么问题,但是在生产环境中,由于数据量巨大,会导致日志查看困难,因此将日志通过某些方法进行自动分割,而修改后的 tomcat 将会按“日”保存日志文件,文件格式例如:catalina.2022-6-10.out
1、方法一:使用 cronolog
RPM包下载方法:在rpmfind.net上搜索cronolog选择对应RPM包复制下载链接即可
下戟安装cronolog:
1
|
[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 安装后所在目录(验证安装是否成功):
1
2
|
[root@localhost logs] # whereis cronolog cronolog: /usr/sbin/cronolog /usr/share/man/man1/cronolog .1m.gz |
编辑 bin/catalina.sh 文件(tomcat的启动文件):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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 |
查看日志分割结果:
1
2
3
|
[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里面):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#通过观察,确认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:
1
|
[root@localhost ~] # yum install httpd -y |
查看 rotatelogs 安装后所在目录(验证安装是否成功):
1
2
|
[root@localhost ~] # whereis rotatelogs rotatelogs: /usr/sbin/rotatelogs /usr/share/man/man8/rotatelogs .8.gz |
编辑 bin/catalina.sh 文件(tomcat的启动文件):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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 |
查看日志分割结果:
1
2
3
|
[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环境下切割日志脚本
1
2
3
4
5
6
7
8
9
10
11
|
将此脚本放到 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日志自动分割内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-01-03 Nginx keepalive 双机热备 主主主从模式
2018-01-03 new及placememt new 异同点
2016-01-03 Linux下如何保持gnome-terminal窗口执行命令后停留而不立刻关闭(gnome-terminal -x)
2016-01-03 jitsi-meet
2014-01-03 raid*
2014-01-03 点到点,端到端概念
2014-01-03 Linux下oracle导入(exp)导出(imp)出现"Failed to open ...for reader/write"错误