Nginx 日志切割

最近还在写图床工具,涉及到日志统计相关的,比如访问统计,流量统计等,看了一下七牛的实现,发现每次创建一个bucket仓库都会自动生成一个域名,该仓库下的资源都会走这个域名。但是自己要实现这一套逻辑还是满繁琐的,所以初步还是考虑用 Nginx 的一些功能来代替,其中流量统计就考虑使用 Nginx 自带的日志来分析。

考虑到日后日志大小过大,NodeJs读取会花太多时间,所以是要按天来切割日志,刚开始我写了一个简单的脚本。利用 crontab 的定时功能。

先按日期重命名文件,然后新建一个同名的日志文件让 Nginx 来写入,实际测试发现新建的 log 并没有被写入。但是 Nginx reload 却可以,最终网上找到了 killall -s USR1 nginx 这条命令来通知 Nginx 重新创建新的日志

#!/bin/bash

log_path='/home/wwwlogs/'

log='pic.noxxxx.com.log'

target=`date "+%Y-%m-%d_%H:%M:%S_"`${log}
#echo $target
cd $log_path

mv $log "./"${target}

killall -s USR1 nginx

#touch $log