zoukankan      html  css  js  c++  java
  • nginx实现日志按天切割

    背景

        nginx的日志文件没有rotate功能。一段时间过后,日志将越发臃肿,一个accesslog很快就突破1G,因此有必要通过脚本实现按天切割日志。

     

    解决思路

    1  重命名日志文件,如更改为access_yyyyMMdd.log,需注意的是nginx通过文件描述符定位日志文件,因此在重命名之后还是能往该文件内写入内容。

     

    2  向nginx主进程发送USR1信号。

        nginx的master进程接到信号后:

        重新从配置文件中读取日志文件名 -> 关闭重名日志文件 -> 创建并打开日志文件(原来的名称) -> 通过worker进程作出改变

     

    代码实现

    A. nginx日志按日期自动切割脚本

    #author: http://www.nginx.cn
    #!/bin/bash
    #日志文件存放目录
    logs_path="/usr/local/nginx/logs/"
    # pid文件
    pid_path="/usr/local/nginx/nginx.pid"
    #重命名日志文件
    mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
    #向nginx主进程发送信号以重新打开日志
    kill -USR1 `cat ${pid_path}

    保存为 cut-log.sh,

    B. 设置定时任务 "crontab -e"

    0 0 * * * bash /usr/local/nginx/nginx_log.sh
    将于每天凌晨0点0分将nginx日志重命名为昨天的日期格式,并重新生成今天的新日志

     

     

    其他实现

    通过apache的rotate程序 + 命名管道的方式

     

  • 相关阅读:
    html 中 url、scr、href、rel、rev
    MIME 和文件扩展名
    视频文件的容器格式和编码格式
    原型与原型链
    属性特征
    可选参数
    函数的定义(函数是值)
    闭包
    实现异步加载js文件及加载完成后回调
    前端工程打开速度优化的循序渐进总结
  • 原文地址:https://www.cnblogs.com/littleatp/p/4625010.html
Copyright © 2011-2022 走看看