Tomcat 下实现 catalina.out 日志分割,以及日志定时清除

Tomcat 下实现 catalina.out 日志分割

1.概述

1.1 问题描述

    由于 Tomcat 的 catalina.out 日志量不断增加,占用空间较大,且默认是不滚动的,不便于分析问题。因此需要对其进行日志分割,并进行清理。

1.2 实现思路

使用软件 Cronolog 对 catalina.out 文件进行分割。

2.安装Cronolog

1)可于官网下载Cronolog

2)下载完解压安装

# tar zxvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure
# make
# make install

3)查看 Cronolog 安装后所在目录,验证安装是否成功,输入以下代码:

#which cronolog

结果显示为:/usr/local/sbin/cronolog表示安装成功。

3. 修改Tomcat的catalina.sh文件

修改 Tomcat 的 bin 目录下的 catalina.sh 文件,具体的修改步骤如下:

1)第一步:

if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

改为

if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d

2)第二步

touch "$CATALINA_OUT"

改为

#touch "$CATALINA_OUT"

3)第三步

org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"

改为

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
|/usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

注:该修改共有两处位置需要更改,修改后如下图!](https://img-blog.csdnimg.cn/20210203220553185.png#pic_center)

在这里插入图片描述

4.重启Tomcat

重启 Tomcat 后,查看日志是否分割成功。

若如下:
在这里插入图片描述

则证明切割成功,后可依据这些日志文档进行分析。

5.shell利用crontab自动清除日志

linux下运行程序有时会产生大量的记录日志,时间一长就会占用很多的磁盘空间。每天手动清除也比较麻烦,因此一个定时脚本执行是很有必要的。

5.1 删除文件shell命令详解

find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
 
例子:
    find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
 
说明:将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:
    find:linux的查找命令,用户查找指定条件的文件;
    /opt/soft/log/:想要进行清理的任意目录;
    -mtime:标准语句写法;
    +30:查找30天前的文件,这里用数字代表天数;
    "*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;
    -exec:固定写法;
    rm -rf:强制删除文件,包括目录;
    {} \; :固定写法,一对大括号+空格+\+;

5.2 创建shell脚本即crontab计划任务

创建shell脚本:

vim del-30-days-ago-logs.sh

脚本内输入以下内容,可以写多行,以分号分隔,同时管理多个tomcat的日志:

find /usr/local/standard2.0-0816/hbjcw-bigdata/container/logs/ -mtine +30 -name "catalina.out.*" -exec rm -rf {} \; 

分配可运行权限

chmod +x del-30-days-ago-logs.sh

使用crontab加入到系统计划任务:

crontab -e
 
 在计划任务内输入以下内容:
 
     10 0 * * * /opt/soft/log/del-30-days-ago-logs.sh >/dev/null 2>&1
     (这里设置的是每天凌晨0点10分执行del-30-days-ago-logs.sh文件进行数据清理任务,根据自己需求灵活变化清理时间和脚本防止的地址)

log/del-30-days-ago-logs.sh >/dev/null 2>&1
(这里设置的是每天凌晨0点10分执行del-30-days-ago-logs.sh文件进行数据清理任务,根据自己需求灵活变化清理时间和脚本防止的地址)















评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值