zoukankan      html  css  js  c++  java
  • Nginx日志按日期切割详解

    由于nginx的日志本身只是支持按照server_name或者大小进行划分,对于习惯了apache的按照一个网站每天一个日志的我来说是不可以接受的,所以就实现了按天切割的功能,这篇文章主要介绍了关于Nginx日志按日期切割的相关资料,需要的朋友可以参考下。

    实现需求

    本文实现的功能是在吗每天凌晨00:00把前一天的Nginx日志access.log重命名为access-xxxx-xx-xx.log格式,例如:access-2016-10-01.log,下面话不多说了,来看看详细的实现方法吧。

    实现方法

    脚本

    vim /www/server/nginx/sbin/cut_nginx_log.sh

    #!/bin/bash
    #此脚本用于自动分割Nginx的日志,包括access.log和error.log
    #每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
    #Nginx日志文件所在目录
    LOG_PATH=/www/server/nginx/logs/
    #获取昨天的日期
    YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
    MONTH=$(date -d "yesterday" +%Y-%m)
    if [ ! -d "${LOG_PATH}access_logs" ]; then
    mkdir "${LOG_PATH}access_logs"
    fi
    if [ ! -d "${LOG_PATH}error_logs" ]; then
    mkdir "${LOG_PATH}error_logs"
    fi

    if [ ! -d "${LOG_PATH}access_logs/${MONTH}" ]; then
    mkdir "${LOG_PATH}access_logs/${MONTH}"
    fi
    if [ ! -d "${LOG_PATH}error_logs/${MONTH}" ]; then
    mkdir "${LOG_PATH}error_logs/${MONTH}"
    fi
    #获取pid文件路径
    PID=/www/server/nginx/logs/nginx.pid
    #分割日志
    mv ${LOG_PATH}access.log ${LOG_PATH}access_logs/${MONTH}/${YESTERDAY}.log
    mv ${LOG_PATH}error.log ${LOG_PATH}error_logs/${MONTH}/${YESTERDAY}.log
    #向Nginx主进程发送USR1信号,重新打开日志文件
    kill -USR1 `cat ${PID}`

    赋予可执行权限:

    chmod +x /www/server/nginx/sbin/cut_nginx_log.sh

    定时任务

    配置crontab每天凌晨00:00定时执行这个脚本

    crontab -e
    # 输入以下内容并保存
    00 00 * * * /bin/bash /www/server/nginx/sbin/cut_nginx_log.sh
  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/cx850116/p/11527057.html
Copyright © 2011-2022 走看看