前言
Logrotate程序是CentOS内置的一个日志文件管理工具。用来把旧的日志文件更名或删除,并创建新的日志文件,我们把它叫做“转储”。是个使日志轮替的程序,有了它就不用看着自己的日志体积一天天的变大,而可以根据你自己的需求来设定日志转储。
logrotate 的主要配置文件是:/etc/logrotate.conf ,以及 /etc/logrotate.d/ 目录下面放置自定义的一些配置文件。比如我们可以将nginx 的相关轮转日志放到 /etc/logrotate.d/ 目录下。logrotate 在运行的时候会执行 者两个目录下的配置。下面我们以nginx 的日志轮转日志为例进行配置。
步骤一 、编写配置文件
/usr/local/nginx/logs/*.log{
#每天进行轮转
daily
#保留20个日志文件
rotate 20
#当日志文件大于100k后进行日志轮转
size 100k
#指定新建的日志文件权限以及所属用户和组
create 644 root root
#日志文件名中增加时间
dateext
# 结合dateext 实现文件的命名
dateformat -%Y%m%d%H-%s
#忽略错误
missingok
#copytruncate
#分享脚本,如果没有配置这个,日志目录下有多个日志时,下面的脚本会执行多次
sharedscripts
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
步骤二、 关闭 SElinux 否者会导致日志无法正常的切割
临时关闭:
setenforce 0
或
setenforce Permissive
永久关闭
vi /etc/selinux/config
将配置文件中
SELINUX=enforcing 改为:SELINUX=disabled
保存配置文件
reboot #重启系统
步骤三、自定义日志滚动执行时间
由于 系统默认的logrotate 是每天的 3-22点 随机选择一个时间,
可能不太符合我们的要求,这个时候就可以自定义一个任务,在每天的23:59分执行日志滚动:
#每天23点59分执行一次 切割nginx 日志 并将运行日志放到 logrotate.splitlog 文件中
59 23 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx >>/usr/local/nginx/logs/logrotate.splitlog 2>&1
第二天看到运行结果如下图:
常用命令:
查看logrotate的运行状态:cat /var/lib/logrotate/logrotate.status
查看crontab 的运行日志: cat /var/log/cron