nginx配置日志和定时分割日志

Nginx日志主要分为两种:

access_log(访问日志)和error_log(错误日志)。

通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。

设置access_log

作用域

可以应用access_log指令的作用域分别有http,server,location,limit_except。也就是说,在这几个作用域外使用该指令,Nginx会报错。

基本用法

access_log /usr/local/nginx/logs/www.nginx.log

不指定则使用nginx.conf里面,默认 log_format 格式

 

 

 

我们打开nginx.conf定位到log.format,配置

    log_format  main  '$remote_addr - $remote_user - [$time_iso8601] - "$request" '
                      '-$status $body_bytes_sent -"$http_referer" '
                      '-"$http_user_agent" -"$http_x_forwarded_for"'
                      '-"$request_uri"';

指定使用该格式

access_log /usr/local/nginx/logs/www.nginx.log main;

 

分割,打包,删除历史,日志

添加shell脚本 nginx-logs-rotate.sh

#!/bin/bash
# Description: rotate nginx access logs
LOGFILE="/usr/local/nginx/cron/cron.log"    #分割和打包日志文件 
NGX_PID=`cat /usr/local/nginx/logs/nginx.pid`

LOGS_DIR="/usr/local/nginx/logs" #nginx默认log目录

WWW_LOG_NAME="www.nginx.log"  #nginx默认log的名称
ACCESS_LOG_NAME="access.log"
ERROR_LOG_NAME="error.log"

PLACE_DIR="/usr/local/nginx/logs/place/"  #nginx分割后log存放目录

LOG1="$(date +%F -d 'yesterday')_$WWW_LOG_NAME"  #nginx分割后log的名称
LOG2="$(date +%F -d 'yesterday')_$ACCESS_LOG_NAME"
LOG3="$(date +%F -d 'yesterday')_$ERROR_LOG_NAME"
#分割
cd $LOGS_DIR
mv  $WWW_LOG_NAME $PLACE_DIR$LOG1
mv  $ACCESS_LOG_NAME $PLACE_DIR$LOG2
mv  $ERROR_LOG_NAME $PLACE_DIR$LOG3

/bin/kill -USR1 $NGX_PID

#打包
if [[ $? == 0 ]]; then 
cd $PLACE_DIR
tar czvf $(date +%F -d 'yesterday').tar.gz $LOG1 $LOG2 $LOG3 >> $LOGFILE   #判断是否成功,则压缩。 
echo "$LOG1 SUCCESSFUL!" >> $LOGFILE
rm -f $LOG1 
rm -f $LOG2
rm -f $LOG3 
else  
echo "Fail!" >> $LOGFILE  
fi

#删除历史日志
KEEPTIME=1                                                         #定义需要删除的文件距离当前的天数 
DELFILE=`find $PLACE_DIR -type f -mtime +$KEEPTIME -exec ls {} \;`     #找到天数大于多少天的文件 
for delfile in ${DELFILE}                                              #循环删除满足天数大于多少天的文件 
do 
rm -f $delfile 
done

加入crontab定时任务

crontab -e
0 0 * * * /usr/local/nginx/cron/nginx-logs-rotate.sh

 

 

分割前的日志

 

分割后打包的日志

 

 

 

posted @ 2020-04-10 17:25  suruozhong  阅读(611)  评论(0编辑  收藏  举报