使用自带的logrotate切割catalina.out日志文件

随着项目的运行,Tomcat的日志文件catalina.out的大小日益增大,现在都有好几个GB了。如果我们不做任何处理, catalina.out的文件大小将会持续增加,直到把我们的系统硬盘空间给撑爆不可。

当Tomcat的日志文件catalina.out的大小大于2GB时,Tomcat程序崩溃时将有可能会启动失败并且不会有任何错误信息提示。为了避免该场景的出现,我们要定期轮转catalina.out日志文件。

这里我使用 Ubuntu 16.04.6自带的logrotate程序来解决catalina.out的日志轮转问题。这种方式比较简单。在/etc/logrotate.d/目录下新建一个名为tomcat的文件

1、/etc/logrotate.d/目录创建一个tomcat文档,内容如下:


/usr/local/dsa5200/tomcat10010/logs/catalina.out {copytruncatedailyrotate 15compressmissingoksize 200Mdateext
}

2、配置说明

 /usr/local/dsa5200/tomcat10010/logs/catalina.out         #服务器中catalina.out存放地址copytruncate    #拷贝原日志文件,并将其大小变为0daily    #每天切割rotate 15    #保留最多15个文件compress   #压缩分割后的文件missingok   #文件丢失了,继续切割而不报错size 200M     #当catalina.out文件大于200M时,就切割dateext    # 这个参数很重要!就是切割后的日志文件以当前日期YYYYMMDD为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式

3、更多参数

compresscmd # 指定压缩的命令,默认 gzip
uncompresscmd # 用于解压缩的日志文件的命令 默认是 gunzip
compressext  # 启用压缩的扩展名,默认 gzip 的扩展名就是 .gz。
copy  # 制作日志文件的副本,与create选项互斥。
copytruncate # 用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。与create选项互斥。
create mode owner group # 在切割后,创建新的日志文件,并指定数据的权限和所有者和所属组。
dateext    # 这个参数很重要!就是切割后的日志文件以当前日期YYYYMMDD为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
dateformat format_string # 指定日志文件后缀日期格式
ifempty # 表示即使是空文件也要选择,该选项是默认值。与 notifempty 相反
notifempty  # 当日志文件为空时,不进行轮转,与 ifempty 相反
mailfirst  #  当配置了邮件地址,指定发送最新的文件
maillast  # 当配置了邮件地址,指定发送最旧的文件,(默认设置)
rotate count  # 日志保留的次数, 如果该参数不写的话,默认就是删除之前所有的文件日志。比如切割了200次,那么只保留最新的180次日志,并删除旧的20次日志。如果配置文件指定的是 daily,那每天切割一次日志,就意味着保留180天日志。
maxage count # 删除早于 count 天的日志,如果配置了 mail 则通过邮件发送。
daily   # 每天 切割
weekly  # 每周运行一次,通常在每周的第一天。
monthly      # 每月运行一次切割,通常会在该月的第一天。
yearly   # 如果当前年份与上一次年份不相同,就会进行切割
nocompress   # 不进行压缩。
size size  # 日志文件达到多大就切割
olddir dir  # 切割后存放的目录
start count  #  当没有指定日期后缀,将数字作为后缀内容,默认是从 1 开始 。可以指定其他数字开始。
missingok   # 如果日志丢失,不报错继续滚动下一个日志
mail  112@163.com # 该参数与 rotate 是有关联的,当超过 rotate 指定次数,文件不是删除,而是通过邮件发送到指定位置。
prerotate       # 在logrotate转储之前需要执行的指令
postrotate      # 在logrotate转储之后需要执行的指令3.85 版本增加每个小时切割
hourly # 每个小时切割

4、以上是如何工作的呢??

1、每天晚上,cron daemon会自动执行/etc/cron.daily目录下的任务。

2、这个会触发/etc/cron.daily/logrotate文件,logrotate一般是随linux安装的。它会执行这个命令-“/etc/sbin/logrotate /etc/logrotate.conf”(注意空格)

3、/etc/logrotate.conf 包含了/etc/logrotate.d目录下的所有脚本

4、这个会触发上一步写的/etc/logrotate.d/tomcat文件

5、示例配置

 文件路径,可以使用通配符。
/opt/tomcat/logs/catalina.out{compress compressext .gzcopytruncatedateextnotifemptymaillastrotate 180 dailysize 10Molddir /opt/logs/tomcatmissingokmail 888888@qq.com # 如果我们本地没有配置好发送邮件配置的话是发送不了邮件的。
}

6、常用命令

logrotate -d -f /etc/logrotate.d/tomcat # 测试配置文件是否配置正常
logrotate -f /etc/logrotate.d/tomcat # 立刻切割文件,可以将该命令放到定时任务中实现定时切割

7、注意事项:

当我们设置好日志按日进行切割的时候,具体的执行时间是在什么时候呢?我们不要以为是会在 24.00 的时候进行切割的,它进行切割的时间是随机的。这个随机值取决于 crond 服务的,最终会取决于文件 /etc/anacrontab ,[root@localhost ~]# cat /etc/anacrontab
/etc/anacrontab: configuration file for anacronSee anacron(8) and anacrontab(5) for details.SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
the maximal random delay added to the base delay of the jobs # 延迟时间
RANDOM_DELAY=45
the jobs will be started during the following hours only    执行时间段
START_HOURS_RANGE=3-22#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly
我们可以发现 定时任务是会在 3-22点的5分-45分里面进行日志切割。

8、生产环境中该如何定时日志分割

我们在实际的生产环境中,我们通常会进行按日进行日志分割,也就是我们希望在 24.00 进行前一天的日志分割,我们可以通过 crond 服务进行定时切割 (logrotate -f /etc/logrotate.d/tomcat ), 但是我们通常在很多应用中会有定时任务在 24.00进行执行,那个时间段也就会产生大量的日志,如果我们在此时切割,那么我们可能会导致比较多的重要的日志丢失(并且此时任务多,资源消耗多,切割也慢),那么我们建议先咨询开发,24.00 是否有大量定时任务,我们可以在 24.00之前几分钟或者之后几分钟进行切割。这样就避免大量的日志丢失。

参考文献:https://www.linuxidc.com/Linux/2019-05/158596.htm。

使用自带的logrotate切割catalina.out日志文件相关推荐

  1. 解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题

    解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 参考文章: (1)解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题 (2)http ...

  2. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式

    为什么80%的码农都做不了架构师?>>>    Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题 ...

  3. 使用cronolog日志切分工具切分Tomcat的catalina.out日志文件

    使用cronolog日志切分工具切分Tomcat的catalina.out日志文件 <1>下载cronolog,并进行安装 wget http://cronolog.org/downloa ...

  4. Linux 自带神器 logrotate 详解

    logrotate 程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节省磁盘空间.下面就对 logrotate 日志轮转操 ...

  5. catalina.out 日志切割及定时清理

    一.安装 1.. 安装使用cronolog工具对catalina.out日志文件进行切割 # wget http://cronolog.org/download/cronolog-1.6.2.tar. ...

  6. logrotate 可用于nginx等日志文件压缩(系统自带)

    logrotate介绍 对于Linux系统安全来说,日志文件是极其重要的工具.日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.当日志文件不断增长的时候,就需要定 ...

  7. 日志文件切割服务logrotate配置及crontab定时任务的使用

    1.下载logrotate 在Fedora和CentOS安装 yum install logrotate crontabs Debian和Ubuntu上 apt-get install logrota ...

  8. 如何在Centos 7上用Logrotate管理日志文件

    何为Logrotate? Logrotate是一个实用的日志管理工具,旨在简化对系统上生成大量的日志文件进行管理. Logrotate允许自动旋转压缩,删除和邮寄日志文件,从而节省宝贵的磁盘空间. L ...

  9. window 如何查看tomcat 实时日志_如何处理生产环境Tomcat的catalina.out日志?

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 作者:jmcui  来源:http://1t.click/x4q # 前言 随着每天业务的增长,Tomcat 的catalina.out ...

最新文章

  1. typescript 叹号_TypeScript系列(五)最佳实践
  2. rabbitmy实战
  3. redis配置主从复制
  4. System.LazyT 延迟加载
  5. 【蓝桥杯Java_C组·从零开始卷】第六节(二)、蓝桥杯常用数学公式
  6. Js实现div随鼠标移动的方法
  7. 博客园配置windows live writer,实现本地代码高亮
  8. 一个软件工作者给前女友的最后一封信
  9. 1071-数字的空洞
  10. 编译异常例子java_Java中异常发生时代码执行流程
  11. 文件复制 详解(C++)
  12. 群晖如何建php网站_群晖nas使用教程31:搭建个人网站ZBLOG
  13. Java 将Word转为OFD
  14. 中南大学计算机基础考试试题,[中学]中南大学计算机基础考试题库试题.doc
  15. 幼儿园计算机信息技术培训总结,幼儿园教师信息技术培训总结
  16. 【20191025】考试
  17. 【Windows内核编程】Win10/Win11通过PspCidTable取得EProcess
  18. Codeforces1541B Pleasant Pairs (思维)
  19. 基于JSP+Servlet+MySQL的智能停车管理系统(附论文)
  20. 远程计算机桌面登录拒绝访问,win7远程界面显示拒绝访问

热门文章

  1. 在自己电脑上编写的项目如何让别人也能访问(内网穿透)?
  2. 什么情况下不能弱势?
  3. 线程生命周期以及线程创建的三种方式
  4. WSL2 Ubuntu安装Kafka教程
  5. 正规式转换为NFA代码实现
  6. 使用ELK搭建统一日志分析平台
  7. 使用slf4j的时候一个错误Failed to load class org.slf4j.impl.StaticLoggerBinder。
  8. 使用python制作一个批量查询搜索排名的SEO免费工具
  9. 取代ZooKeeper,Twitter 的动态配置实践
  10. Ubuntu使用总结-持续更新