内容简介:一.Logrotate工具介绍Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件的大小、天数等来转储,便于对日志文件管理,一般都是通过cron计划任务来完成的,让日志切割实现按小时分割,按天分割等。二.Logrotate运行机制
一.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...]
-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 |
即使日志文件是空的也轮替 |
|
将轮替后的文件发送到指定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 #轮替后日志文件放入指定的目录
}
注意:我这个配置里没有设置多久切割一次,但是它也是一天切割一次,因为当/etc/logrotate.d/tomcat这个文件没有配置时,默认是每天定时执行/etc/cron.daily/logrotate这个文件,这个文件是一天一次的。
#强制执行切割,查看/var/log/tomcat/oldlog下是否有日志
[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat
reading config file /etc/logrotate.d/tomcat
olddir is now /var/log/tomcat/oldlog
Allocating hash table for state file, size 15360 B
Handling 1 logs
rotating pattern: /usr/local/tomcat8/logs/catalina.out forced from command line (5000 rotations)
olddir is /var/log/tomcat/oldlog, empty log files are not rotated, old logs are removed
considering log /usr/local/tomcat8/logs/catalina.out
log needs rotating
rotating log /usr/local/tomcat8/logs/catalina.out, log->rotateCount is 5000
Converted ' .%Y%m%d-%H点' -> '.%Y%m%d-%H点'
dateext suffix '.20181226-15点'
glob pattern '.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]点'
glob finding old rotated logs failed
fscreate context set to unconfined_u:object_r:usr_t:s0
renaming /usr/local/tomcat8/logs/catalina.out to /var/log/tomcat/oldlog/catalina.out.20181226-15点
compressing log with: /bin/gzip
set default create context to unconfined_u:object_r:usr_t:s0
set default create context
#查看切割结果
#把之前切割的删除了,因为再定时切割文件是相同的,还是catalina.out.20181226-15点.gz这个文件,所以不会切割成功。
[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.20181226-15点.gz
[root@test01 ~]# ls /var/log/tomcat/oldlog/
[root@test01 ~]#
#设置定时任务,每一分钟切割一次(注意:日志里要有内容,因为前面定义空的日志文件是不切割的)
[root@test01 ~]# crontab –e
*/1 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log
#每俩小时切割一次
[root@test02 ~]# crontab -l
0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log
#查看定时切割的结果
当然,上面设置一分钟切割一次,是为了实验能尽快看到效果。实际是需要根据公司需要来设置多久来切割一次日志的!
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-02/156972.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Java实现文件切割拼接
- nginx短篇(8):日志切割
- Nginx学习之定时切割日志
- MongoDB 日志切割三种方式
- Python 切割图片获取 151 个 Pokemon
- Golang 语言三方库 lumberjack 日志切割组件怎么使用?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Music Recommendation and Discovery
Òscar Celma / Springer / 2010-9-7 / USD 49.95
With so much more music available these days, traditional ways of finding music have diminished. Today radio shows are often programmed by large corporations that create playlists drawn from a limited......一起来看看 《Music Recommendation and Discovery》 这本书的介绍吧!