• 【Nginx】如何按日期分割Nginx日志?看这一篇就够了!!


    写在前面

    Nginx是没有以日期格式作为文件名来存储的,也就是说,Nginx不像Tomcat,每天自动生成一个日志文件,所有的日志都是以一个名字来存储,时间久了日志文件会变得很大。这样非常不利于分析。虽然nginx没有这个功能但我们可以写一个小脚本配合计划任务来达到这样的效果。即让Nginx每天产生一个日志文件,方便我们进行后续的数据分析。

    分割Nginx日志

    首先,我们要创建一个脚本文件,用来分割Nginx日志,具体脚本如下:

    vim /usr/local/nginx-1.19.1/cutnginxlog.sh
    

    脚本内容如下:

    #!/bin/sh
    # Program:
    #     Auto cut nginx log script.
     
    # nginx日志路径 
    LOGS_PATH=/usr/local/nginx-1.19.1/logs
    TODAY=$(date -d 'today' +%Y-%m-%d)
     
    # 移动日志并改名
    mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${TODAY}.log
    mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log
     
    # 向nginx主进程发送重新打开日志文件的信号
    kill -USR1 $(cat /usr/local/nginx-1.19.1/logs/nginx.pid)
    

    接下来就是给cutnginxlog.sh文件授权。

    chmod a+x cutnginxlog.sh
    

    接下来添加计划任务,定时执行cutnginxlog.sh脚本,以root用户执行如下命令:

    echo '59 23 * * * root /usr/local/nginx-1.19.1/cutnginxlog.sh >> /usr/local/nginx-1.19.1/cutnginxlog.log 2>&1' >> /etc/crontab
    

    意思就是在每天的23点59分执行脚本。将自动任务的执行日志(错误和正确的日志)自动写入cutnginxlog.log,“命令 >> 2>&1” 表示以追加方式将正确输出和错误输出都保存到同一个文件中。

    好了,今天就聊到这儿吧!别忘了点个赞,给个在看和转发,让更多的人看到,一起学习,一起进步!!

    写在最后

    如果你觉得冰河写的还不错,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习高并发、分布式、微服务、大数据、互联网和云原生技术,「 冰河技术 」微信公众号更新了大量技术专题,每一篇技术文章干货满满!不少读者已经通过阅读「 冰河技术 」微信公众号文章,吊打面试官,成功跳槽到大厂;也有不少读者实现了技术上的飞跃,成为公司的技术骨干!如果你也想像他们一样提升自己的能力,实现技术能力的飞跃,进大厂,升职加薪,那就关注「 冰河技术 」微信公众号吧,每天更新超硬核技术干货,让你对如何提升技术能力不再迷茫!

  • 相关阅读:
    js-快速选择日期区间
    关于状态更新时间字段取值的问题
    MySql 前缀索引
    Java springMVC 多数据源的实现和使用
    哈哈哈,终于找到一个安稳的“家”了
    POJ 1724: Roads
    POJ 1221: UNIMODAL PALINDROMIC DECOMPOSITIONS
    createjs 用户画线 粗细bug Graphics setStrokeStyle() 粗细BUG
    GAudio是一个音频播放SDK
    新做的一个基于OPENGL的gui库
  • 原文地址:https://www.cnblogs.com/binghe001/p/13298575.html
Copyright © 2020-2023  润新知