Logrotate实现Catalina.out日志按小时切割

一.Logrotate工具介绍

Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件的大小、天数等来转储,便于对日志文件管理,一般都是通过cron计划任务来完成的,让日志切割实现按小时分割,按天分割等。

二.Logrotate运行机制

系统会定时运行logrotate,一般是每天一次。系统是这么实现按天执行的。crontab会每天定时执行/etc/cron.daily目录下的脚本,而这个目录下有个文件叫logrotate。

[root@test01 ~]# cat /etc/cron.daily/logrotate

#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"

fi

exit 0

实际运行时,Logrotate会调用配置文件/etc/logrotate.conf

三.Logrotate的组成

/usr/sbin/logrotate        #程序所在位置;

/etc/cron.daily/logrotate    #默认让Cron每天执行logrotate一次;

/etc/logrotate.conf        #全局配置文件;

/etc/logrotate.d/          #应用自个的配置文件存放目录,覆盖全局配置;

注意:logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。另外,如果/etc/logrotate.d/里面的文件中没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。

四.Logrotate的命令格式

logrotate [OPTION...] <configfile>
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。

例如:想强行切割日志文件,不等logrotate切割。

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat  #我是用来测试用的嘿嘿

注意:CentOS7 命令是在/usr/sbin/里。

五.常用配置参数说明

Logrotate功能的实现,最重要的就是它的配置参数

下面介绍下它常用的配置参数:

compress

 

启用压缩,指的是轮替后的旧日志,这里默认用的是gzip压缩的

 

daily

 

每天轮替

 

dateext

 

使用当期日期作为命名格式

 

dateformat .%s

 

配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数

 

ifempty

 

即使日志文件是空的也轮替

 

mail

 

将轮替后的文件发送到指定E-mail地址

 

copytruncate

 

用于还在打开中的日志文件,把当前日志备份并截断,是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。

 

monthly

 

一个月轮替一次

 

nocompress

 

如果在logrotate.conf中启用了压缩,这里是做不用压缩的参数

 

nomail

 

不发送邮件到任何地址

 

notifempty

 

如果日志是空的就不轮替(也就是空日志不切割)

 

olddir + 目录

 

轮替后日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

 

rotate +次数

 

轮替最多保留之前的数据几次,超出的将被删除或邮件接收,设为0则不保存

 

size size

 

当日志增长到指定大小的时候开始轮替

 

weekly

 

如果当前的星期几比上次轮替的星期几少,或者过了一个多星期,就会发生轮替通常是在每周的第一天轮替,如果logrotate不是每天运行的,会在第一次有机会时进行轮替

 

yearly

 

如果当前年份不同于上次轮替的年份,则进行日志轮替

 

Missingok

 

如果日志丢失,不报错继续滚动下一个日志

 

六.安装配置Logrotate

#yum安装下


 [root@test01 ~]# yum -y install logrotate

#机器已经装好tomcat,下面配置切割tomcat日志的配置文件


[root@test01 ~]# vim /etc/logrotate.d/tomcat

注意:logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。

日志文件的切割轮循设置在独立的配置文件中,它们是放在/etc/logrotate.d/目录下的。


[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog

[root@test01 ~]# cat /etc/logrotate.d/tomcat

/usr/local/tomcat8/logs/catalina.out {  #要切割的日志路径,如果是多个就用空格分隔

notifempty    #如果日志是空的就不轮替(也就是空日志不切割)

rotate 5000    #轮替最多保留之前的数据5000次

missingok      #如果日志丢失,不报错继续滚动下一个日志

compress      #启用压缩,指的是轮替后的旧日志,这里默认用的是gzip压缩的

dateext        #使用当期日期作为命名格式

dateformat .%Y%m%d-%H点    #配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s

olddir /var/log/tomcat/oldlog  #轮替后日志文件放入指定的目录 

}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4da9224624f41b69a63d7d877e6b34fc.html