logrotate 日志切割

logrotate 是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,可以称之为: "转储"。
可以根据大小/时间等,该过程一般通过 cron 程序来执行。

安装logrotate

yum -y install logrotate  
rpm -ql logrotate

logrotate 配置文件

# 主要参数文件,可以理解为全局配置文件
/etc/logrotate.conf

# 该目录里面的所有数据配置都会被主动读入/etc/logrotate.conf 当中来进行
# 在/etc/logrotate.d/ 中的配置文件,如果没有指定一些详细的设置,则以 /etc/logrotate.conf 的规定来指定为默认值
/etc/logrotate.d/

创建切割配置文件

cd /etc/logrotate.d/

# 复制一份原有的,然后根据需求来修改配置属性
cp -a oldfile log-file

vi log-file

配置简介

/var/test/storage/logs/laravel.log {
    size=30M
    missingok
    rotate 31
    compress
    delaycompress
    notifempty
    copytruncate
    dateext
    create 0644 www www
}
su banboo banboo 是 su <user> <group >
missingok 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
compress 通过gzip 压缩转储以后的日志 (在轮循任务完成后,已轮循的日志将使用gzip进行压缩)
nocompress 不需要压缩时,用这个参数
rotate 31 表示保留31天的备份文件(将存储31个归档日志。对于第32个归档,时间最久的归档将被删除)
notifempty 如果日志文件为空,轮循不会进行
copytruncate 表示先复制log文件的内容,然后再清空
dateext 表示备份的日志文件后缀格式为YYYYMMDD(切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号)
create 以指定的权限创建全新的日志文件

运行 logrotate

# 为/etc/lograte.d/ 下的所有日志切割配置
logrotate /etc/logrotate.conf

# 某个特定的配置调用logrotate,执行一次切割任务测试
logrotate -vf /etc/logrotate.d/log-file

# -f:选项来强制logrotate轮循日志文件
# -v:参数提供了详细的输出

# 设置定时任务
00 00 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/log-file &>/dev/null

参考

https://www.cnblogs.com/along21/p/9198427.html

https://wsgzao.github.io/post/logrotate/