首页 > 其他 > 详细

nginx实现日志按天切割

时间:2015-07-06 19:31:40      阅读:140      评论:0      收藏:0      [点我收藏+]

背景

    nginx的日志文件没有rotate功能。一段时间过后,日志将越发臃肿,一个accesslog很快就突破1G,因此有必要通过脚本实现按天切割日志。

 

解决思路

1  重命名日志文件,如更改为access_yyyyMMdd.log,需注意的是nginx通过文件描述符定位日志文件,因此在重命名之后还是能往该文件内写入内容。

 

2  向nginx主进程发送USR1信号。

    nginx的master进程接到信号后:

    重新从配置文件中读取日志文件名 -> 关闭重名日志文件 -> 创建并打开日志文件(原来的名称) -> 通过worker进程作出改变

 

代码实现

A. nginx日志按日期自动切割脚本

#author: http://www.nginx.cn
#!/bin/bash
#日志文件存放目录
logs_path="/usr/local/nginx/logs/"
# pid文件
pid_path="/usr/local/nginx/nginx.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
#向nginx主进程发送信号以重新打开日志
kill -USR1 `cat ${pid_path}

保存为 cut-log.sh,

 

B. 设置定时任务 "crontab -e"

0 0 * * * bash /usr/local/nginx/nginx_log.sh

 

将于每天凌晨0点0分将nginx日志重命名为昨天的日期格式,并重新生成今天的新日志

 

 

其他实现

通过apache的rotate程序 + 命名管道的方式

 

nginx实现日志按天切割

原文:http://www.cnblogs.com/littleatp/p/4625010.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!