Tomcat日志自动分割的三种方法

 更新时间:2022年07月27日 10:58:07   作者:Johnny.G  
本文主要介绍了Tomcat日志自动分割的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

相关文章

  • 安装tomcat后可能出现的问题介绍

    安装tomcat后可能出现的问题介绍

    大家好,本篇文章主要讲的是安装tomcat后可能出现的问题介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 使用Maven tomcat:run命令启动web项目时修改默认端口的方法

    使用Maven tomcat:run命令启动web项目时修改默认端口的方法

    今天小编就为大家分享一篇使用Maven tomcat:run命令启动web项目时修改默认端口的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • tomcat如何去掉项目名称直接访问项目

    tomcat如何去掉项目名称直接访问项目

    这篇文章主要介绍了tomcat如何去掉项目名称直接访问项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 解决spring boot + jar打包部署tomcat 404错误问题

    解决spring boot + jar打包部署tomcat 404错误问题

    这篇文章主要介绍了spring boot + jar打包部署tomcat 404错误问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Tomcat starup.bat脚本开机自启动的实现

    Tomcat starup.bat脚本开机自启动的实现

    本文主要介绍了Tomcat starup.bat脚本开机自启动的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Tomcat实现热部署

    Tomcat实现热部署

    本篇文章主要介绍了Tomcat热部署的概念、好处与实现方式,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Linux安装与卸载Tomcat8的详细图文教程

    Linux安装与卸载Tomcat8的详细图文教程

    这篇文章主要介绍了Linux安装与卸载Tomcat8的详细图文教程,在卸载tomcat之前需要先暂停tomcat,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • IDEA 2020 配置Tomcat服务器的详细步骤

    IDEA 2020 配置Tomcat服务器的详细步骤

    这篇文章主要介绍了IDEA 2020 配置Tomcat服务器的详细教程,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 解决Tomcat的maxPostSize属性的配置需要注意的问题

    解决Tomcat的maxPostSize属性的配置需要注意的问题

    这篇文章主要介绍了解决Tomcat的maxPostSize属性的配置需要注意的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Tomcat与JDK版本对应关系以及Tomcat各版本特性

    Tomcat与JDK版本对应关系以及Tomcat各版本特性

    这篇文章主要介绍了Tomcat与JDK版本对应关系以及Tomcat各版本特性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论