1、创建轮询日志文件,加入如下内容,log-file是我自已指定的文件日志名字

[root@mysql mnt]# cat /etc/logrotate.d/log-file     

/mnt/log-file {

    size=100M

    rotate 5

    compress

    dateext

    dateformat %Y-%m-%d-%s

    delaycompress

    notifempty

    missingok

    create 644 root root

    postrotate

        /usr/bin/killall -HUP rsyslogd

    endscript

}

这里:

  • monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。

  • size: 日志文件大小,容量等到了设置范围的大小,就会自行切割

  • rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。

  • compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。

  • delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

  • missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

  • notifempty: 如果日志文件为空,轮循不会进行。

  • create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。

  • postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

2、生成日志文件并测试

[root@mysql ~]# cd /mnt

[root@mysql mnt]# dd if=/dev/zero of=/mnt/log-file bs=100M count=1

记录了1+0 的读入

记录了1+0 的写出

104857600字节(105 MB)已复制,0.103621 秒,1.0 GB/秒

[root@mysql mnt]# logrotate /etc/logrotate.d/log-file 

[root@mysql mnt]# ls

log-file  log-file2015-11-30-1448828422

[root@mysql mnt]# dd if=/dev/zero of=/mnt/log-file bs=100M count=1

记录了1+0 的读入

记录了1+0 的写出

104857600字节(105 MB)已复制,0.0940398 秒,1.1 GB/秒

[root@mysql mnt]# logrotate /etc/logrotate.d/log-file 

[root@mysql mnt]# ls

log-file                          log-file2015-11-30-1448828442

log-file2015-11-30-1448828422.gz

[root@mysql mnt]# dd if=/dev/zero of=/mnt/log-file bs=100M count=1

记录了1+0 的读入

记录了1+0 的写出

104857600字节(105 MB)已复制,0.0861139 秒,1.2 GB/秒

[root@mysql mnt]# logrotate /etc/logrotate.d/log-file 

[root@mysql mnt]# ls

log-file                          log-file2015-11-30-1448828442.gz

log-file2015-11-30-1448828422.gz  log-file2015-11-30-1448828473

[root@mysql mnt]# crontab -l

*/1 * * * * /usr/sbin/logrotate  /etc/logrotate.d/log-file