zoukankan      html  css  js  c++  java
  • Nginx日志按日切分及清理超期的日志文件

    Nginx的日志配置如下:

    #定义日志打印的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    # 声明log   log文件路径  log格式
    access_log  logs/access.log  main;

    上面是http作用域下的日志配置,除此之外,nginx还有server和location作用域可以配置日志,日志级别 location > server > http 。

    nginx的日志如果不做切分的话会在一个文件中一直追加,导致日志文件越来越大,所以通过编写脚本来实现控制日切的功能,同时清理存在超过30天的文件。

    脚本如下:

    #!/bin/bash
    #LOGS_PATH为日志存放路径
    LOGS_PATH=/weblog/nginx/logs
    YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
    KEEPTIME=$(date -d "-30 days" +%Y-%m-%d)
    #切分日志文件
    mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
    mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
    #通过Nginx信号量控制重读日志,/web/nginx/为nginx安装目录
    kill -USR1 $(cat /web/nginx/logs/nginx.pid)
    #删除30天前的日志文件
    rm -f ${LOGS_PATH}/access_{KEEPTIME}.log
    rm -f ${LOGS_PATH}/error_{KEEPTIME}.log
    echo 0

    添加系统定时任务

    crontab -e
    #每天0时1分进行日志分割
    01 00 * * * /web/nginx/logs/cut_nginx_log.sh  
     
    #重启Linux定时任务
    crond restart
  • 相关阅读:
    java包装类的缓存机制(转)
    分布式事务的思考(转)
    分布式事务框架介绍与使用案例
    java 内部类、匿名内部类
    spring cloud应用
    Oralce学习笔记(六)
    部署CentOS虚拟机集群
    商品详情页系统架构
    Oracle学习笔记(五)
    hystrix完成对redis访问的资源隔离
  • 原文地址:https://www.cnblogs.com/zjfjava/p/11154989.html
Copyright © 2011-2022 走看看