Nginx日志分割

对于访问量大的站点,每天会产生大量的日志文件,为了方便我们排错和查看相关日志,对日志进行分割显得相当必要,下面是Nginx日志按日期进行分割的示例:

创建 bash 脚本

$ mkdir -p /data/bash_script
$ touch /data/bash_script/auto_split_nginx_access_log_by_daliy.sh
$ chmod a+x !$ # 添加执行权限

自动分割逻辑

#! /bin/bash

LOGNAME=XXX.dev.meoin.cn #域名,或日志名称
BASEPATH=/data/nginx_logs/$(date -d today +%Y%m%d)
if [ ! -d $BASEPATH ];then
  mkdir -p $BASEPATH
fi
LOGPATH=/var/log/nginx/$LOGNAME.access.log
BACKPATH=$BASEPATH/$LOGNAME.$(date -d today +%Y%m%d%H%M).access.log

mv $LOGPATH $BACKPATH
touch $LOGPATH
kill -USR1 `cat /var/run/nginx/nginx.pid`

开启定时任务

$ crontab -e #root用户登录,其它用户请确保有权限执行
$ */1 * * * * sh /data/bash_script/auto_split_nginx_access_log_by_daliy.sh #为了测试,每分钟执行一次

查看结果

$ ll /data/nginx_logs/20180529
total 488
-rw-r--r-- 1 nginx root   2052 May 29 14:57 xxx.dev.meoin.cn.201805291458.access.log
-rw-r--r-- 1 nginx root   2086 May 29 14:58 xxx.dev.meoin.cn.201805291459.access.log
-rw-r--r-- 1 nginx root    957 May 29 14:59 xxx.dev.meoin.cn.201805291500.access.log
...

你可能感兴趣的:(Nginx日志分割)