zoukankan      html  css  js  c++  java
  • 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

    分割前的日志

    分割后打包的日志

     

  • 相关阅读:
    AspNet Core 核心 通过依赖注入(注入服务)
    AspNetCore 中使用 InentityServer4(2)
    AspNetCore中使用Ocelot之 IdentityServer4(1)
    AspNetCore+Swagger 生成Model 描述
    scp带密码拷贝文件
    redis集群之节点少于六个错误-解决
    [AWS DA Guru] Serverless compute Exam Tips
    [AWS] Lambda Invocation types
    [AWS Developer Guru] CI/CD
    [AWS] Lab: CloudFormation nested stack
  • 原文地址:https://www.cnblogs.com/suruozhong/p/12674757.html
Copyright © 2011-2022 走看看