logrotate日志轮替
在服务器中,一个应用程序只要接收到请求就会产生日志记录,日积月累,会占用很多磁盘空间,也不利于日志跟踪。
很多人会自己写sh脚本定时执行去手动分割日志,其实linux本身自带了一个日志分割轮替神器,就是logrotate。
不需要添加定时脚本,也不需要编写维护sh脚本,只需简单几个配置,就可以实现日志分割轮替。
编辑配置文件 vim /etc/logrotate.conf
weekly --时间参数 weekly按周、yearly按年、monthly按月、daily按日
rotate 4 --转存保留多少份日志
create --指定转存日志权限
dateext
include /etc/logrotate.d
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
nignx日志分割,新增 /etc/logrotate.d/nginx 文件
vim /etc/logrotate.d/nginx
新增一下内容
/usr/local/nginx/logs/*.log {
daily #每日轮替
rotate 7 #保留7个日志文件
compress #对日志进行压缩
missingok #如果日志不存在,则忽略改日志的警告信息
dateext #使用日期作为日志轮替文件的后缀
notifempty #如果日志为空文件,则不进行日志轮替
sharedscripts #所有文件分割后在执行后面的脚本
postrotate #脚本开始标识
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript #脚本结束标识
}
如果是version 2 以上的版本 postrotate/endscript 可以换为
/usr/local/nginx/logs/*.log {
daily #每日轮替
rotate 7 #保留7个日志文件
compress #对日志进行压缩
missingok #如果日志不存在,则忽略改日志的警告信息
dateext #使用日期作为日志轮替文件的后缀
notifempty #如果日志为空文件,则不进行日志轮替
copytruncate # 把原日志文件拷贝一份重命名,然后清空原始文件
}