nginx中使用logrotate管理日志的方法分享

发布时间:2019-11-02编辑:脚本学堂
本文介绍下,在nginx中使用logrotate管理日志文件的方法,实现日志的自动滚动,日志归档等功能。

本文以nginx日志文件为例,讲解下logrotate日志管理工具的用法。

配置:
1、在/etc/logrotate.d目录下,创建一个用于nginx日志的配置文件。
如下:
#vim /etc/logrotate.d/nginx
 

复制代码 代码示例:
/usr/local/nginx/logs/*.log {
daily
rotate 5
missingok
notifempty
sharedscripts
postrotate
    if [ -f /usr/local/nginx/logs/nginx.pid ]; then
        kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    fi
endscript
}

保存退出。

2、执行logrotate
 

复制代码 代码示例:
#/usr/sbin/logrotate -f /etc/logrotate.d/nginx

在/usr/local/nginx/logs目录中会产生
error.log
error.log.1
有如上内容,说明logrotate配置成功。

3、让logrotate每天进行一次滚动
在crontab中添加一行定时脚本
 

复制代码 代码示例:
#crontab -e
59 23 * * *  /usr/sbin/logrotate -f /etc/logrotate.d/nginx
 

每天23点59分进行日志滚动

4、配置文件说明
 

daily:日志文件每天进行滚动
rotate:保留最5次滚动的日志
notifempty:日志文件为空不进行滚动
sharedscripts:运行postrotate脚本

脚本:
 

复制代码 代码示例:
postrotate
    if [ -f /usr/local/nginx/logs/nginx.pid ]; then
        kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    fi
endscript

此脚本平滑重启nginx,并重新生成日志文件。