首页 > 其他分享 >tomcat 日志切割

tomcat 日志切割

时间:2023-01-03 17:37:40浏览次数:64  
标签:catalina 切割 tomcat rotatelogs logs usr 日志 out

修改前的 tomcat 都是将所有数据保存在一个日志文件 catalina.out 中,平时实验环境下没有什么问题,但是在生产环境中,由于数据量巨大,会导致日志查看困难,因此将日志通过某些方法进行自动分割,而修改后的 tomcat 将会按“日”保存日志文件,文件格式例如:catalina.2022-6-10.out

1、方法一:使用 cronolog

官网:http://cronolog.org

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日志自动分割内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:catalina,切割,tomcat,rotatelogs,logs,usr,日志,out
From: https://www.cnblogs.com/ruiy/p/17022901.html

相关文章

  • CentOS7部署tomcat10
    CentOS7部署tomcat10查看tomcat与jdk版本对应关系https://tomcat.apache.org/whichversion.html  一、先安装jdk 1.下载jdk    官网下载如有旧版本请先卸......
  • 【学习笔记】日志
    日志当数据库操作出现错误时,我们需要排错,这时日志就是最好的助手!我们可以将sql在控制台通过日志的方式打印出来,就有可能找到错误。Mybatis通过使用内置的日志工厂提供......
  • ELK日志分析平台环境部署
    注释:原理部分粘贴自https://www.cnblogs.com/kevingrace/p/5919021.html日志概念介绍:日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解......
  • KingbaseES在线wal日志
    KingbaseES数据库日志文件记录数据库的历史操作信息,包含恢复数据库中的所有事务所需的信息。KingbaseES在线WAL日志:WAL日志:预写式日志(Write-AheadLogging(WAL)是保......
  • 如何在多个应用程序中共享日志配置
    有的时候你有多个应用程序,它们需要使用相同的日志配置。在这种情况下,你可以将日志配置放在一个共享的位置,然后通过项目文件快速引用。方便快捷,不用重复配置。Directory.Bu......
  • 数据库日志
    https://jingyan.baidu.com/article/c85b7a6470a8c2413bac95cc.html清除/收缩SQLServer数据库日志(ldf文件)的几种方法https://blog.csdn.net/weixin_44504261/article/de......
  • 【线上问题】Tomcat部分接口偶发出现请求时间过长问题排查
    参考资料​​tomcat响应过慢——解决办法-CodingPanda​​服务器处理客户端请求线程只升不降问题分析总结_cuidongdong1234的博客_服务线程数不降怎么回事​​​​线程数......
  • 整合logback日志框架
    引入lombok依赖<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</s......
  • 前端页面HTML、JS屏蔽页面所有console.log打印日志
      //判断配置文件是否开启日志调试是否输出日志true输出false不输出varlogDebug=true;console.log=(function(oriLogFunc){retur......
  • 2023.1.2 营业日志
    新年快乐。P3895[湖南集训]HungryRabbitAnalysis考虑网络流。发现限制相当于每天最多添加\(l\)个兔子,扔掉\(l\)个兔子,为了方便讨论我们认为刚刚加入的兔子可以被......