zoukankan      html  css  js  c++  java
  • Nginx:Nginx日志切割方法

    Nginx的日志文件是没有切割(rotate)功能的,但是我们可以写一个脚本来自动切割日志文件。

    首先我们要注意两点:

    1.切割的日志文件是不重名的,所以需要我们自定义名称,一般就是时间日期做文件名。

    2.既然是自动切割日志文件,那当然需要定时任务来进行操作,但是这里还涉及一个问题,Nginx的日志是存储在一个文件的,我们要切割就要保证日志数据的完整性,确保得到想要日期的日志信息,这里有一个方法:向Nginx主进程发送USR1信号 ,以重新开启日志的方式记录所需的日志信息。

    接下来就是创建脚本:

    在Nginx的安装目录下创建nginx_log.sh脚本

    # /opt/nginx/ 这是我的nginx安装目录,大家替换成自己的目录
    vi /opt/nginx/nginx_log.sh

    编写脚本如下:

    #!/bin/bash
    
    #设置切割的日志文件存放目录
    LOG_HOME="/opt/nginx/logs/"
    
    #设置切割的日志名称(这里用日期时间的命名方式)
    LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".accesss.log
    
    #开始切割日志文件
    mv ${LOG_HOME}/access.log ${LOG_HOME}/${LOG_PATH_BAK}.log
    
    #向nginx主进程发送信号 重新打开记录日志
    kill -USR1 `cat /opt/nginx/logs/nginx.pid`

    脚本写完了,开始创建定时任务,这里用Linux自带的定时任务管理 crontab 命令

    #创建系统定时任务
    crontab -e

    如下进行编辑:

    #一分钟执行一次
    */1 * * * * sh /opt/nginx/nginx_log.sh

    这里的Cron表达式设置的是一分钟执行一次,可以根据需要更改。

    重启定时任务

    service crond restart

    接下来就可以等待一分钟看看是否生成日志信息:

    至此完成!

  • 相关阅读:
    Spring多数据源动态切换
    IntelliJ Idea使用代码格式化,Tab制表符进行缩进
    idea 快捷键
    final关键字的功能概述
    IntelliJ Idea 常用快捷键列表
    Log4j.properties配置详解
    IDEA添加try catch快捷键
    使用 JMeter 进行压力测试
    idea 复制当前行到下一行快捷键
    js父窗口opener与parent
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12356653.html
Copyright © 2011-2022 走看看