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

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

    至此完成!

  • 相关阅读:
    JavaScript中的闭包
    SQL 备忘
    SqlServer 2005 升级至SP2过程中出现"身份验证"无法通过的问题
    unable to start debugging on the web server iis does not list an application that matches the launched url
    Freebsd 编译内核
    Freebsd 6.2中关于无线网络的设定
    【Oracle】ORA01219
    【Linux】Windows到Linux的文件复制
    【Web】jar命令行生成jar包
    【Linux】CIFS挂载Windows共享
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12356653.html
Copyright © 2011-2022 走看看