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
  • 相关阅读:
    PHP实现多进程并行操作(可做守护进程)
    检测php文件是否有bom头
    安全过滤函数
    模式修正符
    php中const与define的使用区别
    常要用正则表达式
    htaccess 伪静态的规则
    把返回的数据集转换成数组树
    ExtJS实战(3)spring
    ExtJS实战(4)struts
  • 原文地址:https://www.cnblogs.com/zjfjava/p/11154989.html
Copyright © 2011-2022 走看看