参考文档:
运维中的日志切割操作梳理(Logrotate/python/shell脚本实现)
linux下logrotate 配置和理解
Linux日志文件总管——logrotate
日志文件切割服务logrotate配置及crontab定时任务的使用
非常详细的rsyslogd & logrotate配置文件解析
Linux下的日志文件需要我们进行必要的管理维护,压缩,删除等。
logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。当然我们可以创建一些定时任务写一些算法来实现。我们也可以直接使用logrotate。
/etc/logrotate.conf/etc/logrotate.conf是全局的logrotate配置
我们打开可以看到内容
第一个rotate就是我们rotate的时间,默认为一周一次。(daily, weekly, yearly)
rotate是保留的日志个数。
dateext是在日志文件名称后面加时间
include /etc/logrotate.d 就是引入配置,这里是全局配置。
include里的就是引入各自的配置。
/etc/logrotate.d/etc/logrotate.d下的文件就是各自的配置文件,如果有和全局重复的配置,则以此文件为准。
下面是一些配置文件
daily 日志文件按每个月轮循 daily 每天 weakly 每星期 yealy 每年
rotate 5 储存5个归档日志,对于第六个归档,时间最久的自动删除
compress 以归档的文件用gzip进行压缩
mail address 把转储的日志文件发送到指定的E-mail 地址
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create 644 root root 转储文件,使用指定的文件模式创建新的日志文件
size 20M 指定文件当天达到20M的时候才转储
dateext 文件后加上当前日期
当然创建完这个我们可以强制执行
logrotate命令格式:
logrotate [OPTION...]
-d, --debug :debug模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程。
开启了debug选项时,logrotate会详细地给出处理日志过程中的处理信息,但是并不会真正地去处理日志文件
logrotate -d -vf /etc/logrotate.d/apache
使用也是比较简单的。