对于访问量大的站点,每天会产生大量的日志文件,为了方便我们排错和查看相关日志,对日志进行分割显得相当必要,下面是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
...