推荐一款日志切割神器,很好很强大( 二 )


如果仅设定保留三个日志(即轮转3次)的话 , 那么执行第三次时 , 则 messages.3这个档案就会被删除 , 并由后面的较新的保存日志所取代!也就是会保存最新的几个日志 。
日志究竟轮换几次 , 这个是根据配置文件中的dateext 参数来判定的 。
看下logrotate.conf配置:
# cat /etc/logrotate.conf# 底下的设定是 "logrotate 的默认值", 如果別的文件设定了其他的值 , # 就会以其它文件的设定为主weekly //默认每一周执行一次rotate轮转工作rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数 , 0 指没有备份create //自动创建新的日志文件 , 新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾 , 如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式compress //是否通过gzip压缩转储以后的日志文件 , 如xxx.log-20131216.gz ;如果不需要压缩 , 注释掉就行include /etc/logrotate.d# 将 /etc/logrotate.d/ 目录中的所有文件都加载进来/var/log/wtmp { //仅针对 /var/log/wtmp 所设定的参数monthly //每月一次切割,取代默认的一周minsize 1M //文件大小超过 1M 后才会切割create 0664 root utmp //指定新建的日志文件权限以及所属用户和组rotate 1 //只保留一个日志.}# 这个 wtmp 可记录用户登录系统及系统重启的时间# 因为有 minsize 的参数 , 因此不见得每个月一定会执行一次喔.要看文件大小 。 由这个文件的设定可以知道/etc/logrotate.d其实就是由/etc/logrotate.conf 所规划出来的目录 , 虽然可以将所有的配置都写入 /etc/logrotate.conf, 但是这样一来这个文件就实在是太复杂了 , 尤其是当使用很多的服务在系统上面时 ,每个服务都要去修改 /etc/logrotate.conf 的设定也似乎不太合理了 。
所以 , 如果独立出来一个目录 , 那么每个要切割日志的服务 ,就可以独自成为一个文件 , 并且放置到 /etc/logrotate.d/ 当中 。
其他重要参数说明:
compress #通过gzip 压缩转储以后的日志nocompress #不做gzip压缩处理copytruncate #用于还在打开中的日志文件 , 把当前日志备份并截断;是先拷贝再清空的方式 , 拷贝和清空之间有一个时间差 , 可能会丢失部分日志数据 。 nocopytruncate #备份日志文件不过不截断create mode owner group #轮转时指定创建新文件的属性 , 如create 0777 nobody nobodynocreate #不建立新的日志文件delaycompress #和compress 一起使用时 , 转储的日志文件到下一次转储时才压缩nodelaycompress #覆盖 delaycompress 选项 , 转储同时压缩 。 missingok #如果日志丢失 , 不报错继续滚动下一个日志errors address #专储时的错误信息发送到指定的Email 地址ifempty #即使日志文件为空文件也做轮转 , 这个是logrotate的缺省选项 。 notifempty #当日志文件为空时 , 不进行轮转mail address #把转储的日志文件发送到指定的E-mail 地址nomail #转储时不发送日志文件olddir directory #转储后的日志文件放入指定的目录 , 必须和当前日志文件在同一个文件系统noolddir #转储后的日志文件和当前日志文件放在同一个目录下sharedscripts #运行postrotate脚本 , 作用是在所有日志都轮转后统一执行一次脚本 。 如果没有配置这个 , 那么每个日志轮转后都会执行一次脚本prerotate #在logrotate转储之前需要执行的指令 , 例如修改文件的属性等动作;必须独立成行postrotate #在logrotate转储之后需要执行的指令 , 例如重新启动 (kill -HUP) 某个服务!必须独立成行daily #指定转储周期为每天weekly #指定转储周期为每周monthly #指定转储周期为每月rotate count #指定日志文件删除之前转储的次数 , 0 指没有备份 , 5 指保留5 个备份dateext #使用当期日期作为命名格式dateformat .%s #配合dateext使用 , 紧跟在下一行出现 , 定义文件切割后的文件名 , 必须配合dateext使用 , 只支持 %Y %m %d %s 这四个参数size(或minsize) log-size #当日志文件到达指定的大小时才转储 , log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).