logrotate tomcat 日志切割

一般来说,日志是任何故障排除过程中非常重要的一部分,但这些日志会随着时间增长。在这种情况下,我们需要手动执行日志清理以回收空间,这是一件繁琐的管理任务。为了解决这个问题,我们可以在 Linux 中配置 logrotate 程序,它可以自动执行日志文件的轮换、压缩、删除和用邮件发出。

我们可以配置 logrotate 程序,以便每个日志文件可以在每天、每周、每月或当它变得太大时处理。


如何每天自动的分割catalina.out或者大小达到5M时切割catalina.out

1.新建一个文件

在/etc/logrotate.d/ 目录下新建一个文件,命名随意。

1 /etc/logrotate.d/tomcat

2.复制下面的语句至上文新建的文件中

 /var/log/tomcat/catalina.out 
 {   
     copytruncate  
     daily   
     rotate 7  
     compress   
     missingok   
     size 5M  
}

各个配置的具体含义:

  • 确保/var/log/tomcat/catalina.out指向你服务器中的catalina.out的地址
  • daily - 每天切割
  • rotate - 保留最多七个文件
  • compress - 压缩分割后的文件
  • size - 当catalina.out大于5M时分割

如何起作用

  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/tomcate文件

添加自动化任务

1 vi logrotate.sh
#!/bin/bash
 /usr/sbin/logrotate /etc/logrotate.conf
chmod a+x logrotate.sh
2.添加自动化任务每天中午12点执行
00 12 * * * /usr/bin/sh  logrotate.sh

----------------------------------------------------------------------------------------------------------------------------------

logrotate 是如何工作的

默认情况下,logrotate 命令作为放在 /etc/cron.daily 中的 cron 任务,每天运行一次,它会帮助你设置一个策略,其中超过某个时间或大小的日志文件被轮换。

命令: /usr/sbin/logrotate

配置文件: /etc/logrotate.conf

这是 logrotate 的主配置文件。logrotate 还在 /etc/logrotate.d/ 中存储了特定服务的配置。确保下面的那行包含在 /etc/logrotate.conf 中,以读取特定服务日志配置。

 
  
  1. include /etc/logrotate.d`

logrotate 历史: /var/lib/logrotate.status

重要的 logrotate 选项:

 
  
  1. compress --> 压缩日志文件的所有非当前版本
  2. daily,weekly,monthly --> 按指定计划轮换日志文件
  3. delaycompress --> 压缩所有版本,除了当前和下一个最近的
  4. endscript --> 标记 prerotate postrotate 脚本的结束
  5. errors "emailid" --> 给指定邮箱发送错误通知
  6. missingok --> 如果日志文件丢失,不要显示错误
  7. notifempty --> 如果日志文件为空,则不轮换日志文件
  8. olddir "dir" --> 指定日志文件的旧版本放在 dir
  9. postrotate --> 引入一个在日志被轮换后执行的脚本
  10. prerotate --> 引入一个在日志被轮换前执行的脚本
  11. rotate 'n' --> 在轮换方案中包含日志的 n 个版本
  12. sharedscripts --> 对于整个日志组只运行一次脚本
  13. size='logsize' --> 在日志大小大于 logsize(例如 100K4M)时轮换

你可能感兴趣的:(tomcat)