Linux 每天分割catalina.out日志

使用logrotate分割Tomcat的catalina日志

  • 在/etc/logrotate.d/ 目录下新建一个文件,命名随意。
[root@ logs]# touch /etc/logrotate.d/tomcat
  • 内容如下
/usr/local/tomcat/logs/catalina.out {
    copytruncate
    dateext
    ifempty
    daily
    nocompress
    olddir /usr/local/tomcat/logs/
    missingok
}
  • 配置说明:
ogrotate 配置文件的参数:

compress
# 是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行
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  [email protected]
# 该参数与 rotate 是有关联的,当超过 rotate 指定次数,文件不是删除,而是通过邮件发送到指定位置。
prerotate       # 在logrotate转储之前需要执行的指令
postrotate      # 在logrotate转储之后需要执行的指令

###  3.85 版本增加每个小时切割
hourly # 每个小时切割
  • 如何起作用

    • 每天晚上,cron daemon会自动执行/etc/cron.daily目录下的任务
    • 这个会触发/etc/cron.daily/logrotate文件,logrotate一般是随linux按安装的。它会执行这个命令-“/etc/sbin/logrotate /etc/logrotate.conf”(注意空格)
    • /etc/logrotate.conf 包含了/etc/logrotate.d目录下的所有脚本
    • 这个会触发上一步你写的/etc/logrotate.d/tomcate文件
  • 手动执行logrotate
    执行以下语句来手动运行cron任务

/usr/sbin/logrotate /etc/logrotate.conf

你可能感兴趣的:(Linux 每天分割catalina.out日志)