Tomcat的日志切分和定时删除

2023-11-13

 

在我负责的一个小系统中,Linux环境下,由于默认日志都是写入在 cattalina.out中,

我查看日志catalina.out 竟然已经到了 40G了,我想做一下 文件内容检索来追踪问题都无法进行。

于是我决定删除以前的无用日志,以每日作为单位将其进行切分,并写一个定时脚本,定时删除1个月以前的日志数据。

 

Google了一下,大部分都是使用 Cronolog 工具进行切分日志,这里我也是第一次接触,记录一下操作过程方便日后再次使用。

 

话不多说,先看 cronolog 的官网介绍和下载

这里我试着用 yum install cronolog 发现不行,阿里云镜像找不到,就下载包的方式进行安装了。

github上有其项目,网址 https://github.com/fordmason/cronolog

简易介绍:

CRONOLOG version 1.6.1 "cronolog" is a simple program that reads log messages from its input and writes them to a set of output files, the names of which are constructed using a template and the current date and time. The template uses the same format specifiers as the Unix date command (which are the same as the standard C strftime library function). "cronolog" is intended to be used in conjunction with a Web server, such as Apache, to split the access log into daily or monthly logs.

 

大体意思:

“ cronolog”是一个简单程序,可从其输入中读取日志消息并将它们写入一组输出文件,其名称为使用模板名和当前日期和时间进行构造。

模板使用与Unix date命令相同的格式说明符(与标准C strftime库函数相同)。

“ cronolog”旨在与Web服务器结合使用,例如 作为Apache,将访问日志分为每日或每月日志。

 

文件下载 github上的是 zip包,适合windows的部署,

至于 cronolog的详细使用方法和参数介绍,可以 github上的 readme.txt,介绍的还行,我这里就大致了解一下,后续有需要再回来增加用法。

Linux的tar.gz 包下载地址: https://fossies.org/linux/www/old/cronolog-1.6.2.tar.gz/cloc.html

 

cronolog的安装

1、解压缩 
# tar -zxvf cronolog-1.6.2.tar.gz 
2、进入cronolog安装文件所在目录 
# cd cronolog-1.6.2 
3、运行安装 [进入文件夹,使用./configure命令进行编译,可以加--prefix指定安装目录]
# ./configure 
# make 
# make install 
4、查看cronolog安装后所在目录(验证安装是否成功) 
# which cronolog 
一般情况下显示为:/usr/local/sbin/cronolog

 

catalina.sh的修改

进行 TOMCAT目录下的 bin文件夹下

修改 catalina.sh 文件

注意: 这里假设你是TOMCAT7及版本以上,不过因为我有一个TOMCAT6的项目要维护,下面给出了TOMCAT6切分日志的步骤

需要修改3处地方:

1、 将

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

改为

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

 

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 &

 

注意:

1、有两处都改了,以前的内容不要注释,要直接删除了,不然会引发log报错

2、以上的“/usr/local/sbin/cronolog”配置的是cronolog的安装目录,这里要根据你的cronolog安装目录进行配置。

配置完成之后,重启tomcat就可以了。重启访问应用之后就会发现,Catalina.out不会再输出日志,日志会输入到一个catalina.日期.out的文件中。

 

修改完该3处内容后重启tomcat

 

如果是TOMCAT6,没有 CATALINA_OUT变量名的话,第一步跳过,第二步需要,第3步改成这个,其实就是因为 CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out 进行替换即可。

org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \ | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

亲测这种写法在tomcat6可行。

 

 

效果示意:

未加切分日志时的catalina文件

 

加了 Cornolog 工具进行切分后的log文件夹显示

 

新打印的日志已按照每日来划分

因为这句话,如果数据量较小,你也可以按照每月为单位进行切分 catalina.%Y-%m.out

 CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out

 

 

 

定时脚本删除

新建脚本 vim tomcat_log_auto_del.sh

注意该脚本的位置是假设你放在tomcat的bin中

cd `dirname $0` #返回这个脚本文件放置的目录 
cd ../logs #进入你tomcat的logs下,当然你也可以直接用绝对路径 
d=`date -d '30 day ago' +%Y-%m-%d` 
rm -rf catalina.${d}.out

 

crontab -e //编辑当前用户的crontab文件,可指定具体的用户

加入我们的定时任务(表示每天3点跑一次脚本):

0 3 * * * /usr/local/tomcat_log_auto_del.sh >/dev/null 2>&1

 

 

另外一种解决思路:

用shell定时脚本来复制, cp 当天的日志 指定日期命名 来复制当天的日志

清空 catalina.out 的内容,echo "" >

随便可以删除1个月以前的日志

注意该脚本的位置是假设你放在tomcat的bin中

#!/bin/bash cd `dirname $0` #返回这个脚本文件放置的目录 
d=`date +%Y-%m-%d` 
d30=`date -d '30 day ago' +%Y-%m-%d` #输出30天前的日期 
cd ../logs/ #从bin -> logs 
cp catalina.out catalina.${d}.out 
echo "" > catalina.out # 清空日志 
rm -rf catalina.${d30}.out #删除30天前的日期对应的日志

 

参考博文:

http://www.mrliangqi.com/909.html

https://blog.csdn.net/fly910905/article/details/78528652

 

本人博客链接:  http://www.eiletxie.cn/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tomcat的日志切分和定时删除 的相关文章

随机推荐

  • 瀑布流&下拉加载

    瀑布流结合列表下拉加载动画过渡展示 前言 需求默认瀑布流展示列表 下拉加载的时候看到列表顺序过渡加载 1 效果样式 如下 下拉瀑布流加载图片列表 2 引入文件 用到macyjs瀑布流与下拉加载插件mescroll mescroll官网 ht
  • 数据结构学习系列之顺序表的两种插入方式

    方式1 在顺序表末端插入数据元素 代码如下 示例代码 int insert seq list 1 list t seq list int data if NULL seq list printf 入参为NULL n return 1 if
  • 【学习之路】axios之axios.CancelToken

    写法 接受一个回调函数作为参数 new axios CancelToken cancel gt cancel是取消本次请的方法 if xxx cancel else TODO 一般用法 用于发出多个相同请求时 取消重复请求 使用场景 使用数
  • 虚拟机:[Errno 256] No more mirrors to try

    使用linux系统的yum命令去安装一些软件时总是会出现各种问题 下面总结一下 首先确认yum搭建成功 使用mount挂载 每次开虚拟机 都记得要mount挂载 因为这个mount是暂时的 关机后下次就必须重新挂载 不然yum无法正常进行
  • 微信小程序隐藏滚动条的方法,以及禁止上下滑动的方法

    webkit scrollbar display none width 0 height 0 color transparent ms scrollbar display none width 0 height 0 color transp
  • android 手机网络接入点名称及WAP、NET模式的区别

    移动 电信 联通 APN cmwap cmnet ctwap ctnet 3gwap uniwap 3gnet uninet设置 APN Access Point Name 即 接入点名称 用来标识GPRS的业务种类 目前分为两大类 CMW
  • PACS系统源码 PACS源码 基于VC + MSSQL开发

    基于VC MSSQL开发的一套大型医院医学影像PACS系统源码 有演示 文末获取联系 PACS系统可以覆盖医院现有放射 CT MR 核医学 超声 内镜 病理 心电等绝大部分DICOM和非DICOM检查设备 支持从科室级 全院级 集团医院级乃
  • @RequestMapping注解和Controller方法建立映射的流程

    当你的才华还撑不起你的野心的时候 唯有静下心来学习 有没有想过 为什么在controller类的方法上 添加一个 RequestMapping toIndex 注解的时候 从浏览器的输入localhost 8080 toIndex请求就可以
  • vscode 配置c/c++环境,与python共用。

    每个人的电脑路径因人而异 下面只是我的配置 仅供参 参考 vscode的安装以及插件软件的安装根据另一个博主的帖子 https blog csdn net weixin 44049923 article details 103619882
  • 小黄的刷题之路(十七)——码题集OJ赛-循环移位

    文章目录 一 题目 二 分析思路 2 1 审题理解 2 2 思路 三 代码实现 3 1 C 实现 四 总结 一 题目 二 分析思路 2 1 审题理解 给我们一个正整数序列 如果能够通过若干次循环左移调整成一个升序序列 那就输出 YES 否则
  • Unity2D--给动画添加关键帧并绑定事件

    关键帧 一添加关键帧 在Animation面板中添加关键帧 二给关键帧绑定事件 添加关键帧后可以先点击关键帧 然后在Inspector面板中绑定事件 Function为方法名
  • Filter实现权限过滤

    有这么一个简单的要求 用户只有登录才能进入主页 一旦退出就无法进入主页 看似好像生来就该如此但代码层次却不简单 首先要判断用户登录状态 然后拦截判断 后面还会学习拦截器 web文件夹下新建一个文件夹名为sys 该文件夹新建jsp页面名为su
  • Linux 查看磁盘空间

    1 查看当前目录的总大小 du sh ps du disk usage 2 查看某个目录的总大小 du sh 目录名 du后面可以跟的参数含义 a 列出所有的文件与目录容量 因为默认仅统计目录底下的文件量而已 h 以人们较易读的容量格式 G
  • Deep Learning 大体概念和事情

    0 深度学习为什么可能 因为一个事物的发生 其背后总有一个理型 或者叫做规律性 这个规律性就体现在原因与结果的作用关系里 把大多数原因和结果进行量化之后 结果与原因间存在一个数量关系方程 使得 结果 f 众原因 找出来这个大致的方程 f 便
  • 前端 Websocket + Stomp.js 的使用

    什么是Stomp STOMP即Simple or Streaming Text Orientated Messaging Protocol 简单 流 文本定向消息协议 它提供了一个可互操作的连接格式 允许STOMP客户端与任意STOMP消息
  • 【蓝桥OJ——C语言】顺子日期、特殊时间、乘积尾零

    文章目录 顺子日期 特殊时间 乘积尾零 总结 顺子日期 小明特别喜欢顺子 顺子指的就是连续的三个数字 123 456 等 顺子日期指的就是在日期的 yyyymmdd 表示法中 存在任意连续的三位数是一个顺子的日期 例如 20220123 就
  • 【Vue学习笔记】- 模板语法

    Vue模板语法分为两大类 插值语法 指令语法 插值语法 功能 作用于标签体内 目的是解析内容 写法 xxx xxx 是js表达式或data中的数据 指令语法 功能 作用于标签自身 可解析 标签属性 标签体内容 绑定事件 举例 v bind
  • java调第三方接口

    目录 背景 Spring的RestTemplate 1 引入依赖 2 RestTemplate配置类 3 RestTemplate实现类 背景 java调第三方接口我百度的有三种方法 第一种 通过JDK网络类Java net HttpURL
  • SpringBoot jar包的部署方式

    centos版本 CentOS Linux release 7 6 1810 Core JDK1 8 一 SpringBoot jar包的部署方式 nohup 后台进程形式 Linux脚本 启动形式 systemd 优雅系统服务形式 sys
  • Tomcat的日志切分和定时删除

    在我负责的一个小系统中 Linux环境下 由于默认日志都是写入在 cattalina out中 我查看日志catalina out 竟然已经到了 40G了 我想做一下 文件内容检索来追踪问题都无法进行 于是我决定删除以前的无用日志 以每日作