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

    一、使用Logrotate切割日志

    创建Nginx配置

    [root@localhost /]# vim /etc/logrotate.d/nginx
    

    写入如下内容

    /home/nginx/log/*/*.log {
            #以天为周期分割日志
            daily
            ##以日期为单位
            dateext
            #保留最近七天的日志
            rotate 7
            #忽略错误
            missingok
            #如果文件为空则不分割 not if empty
            notifempty
            #开始执行附加的脚本命令 nginx写日志是按照文件索引进行的 必须重启服务才能写入新日志文件
            sharedscripts
            postrotate
            #重启nginx服务
                    [ ! -f /usr/local/nginx/logs/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
            endscript
    }
    

    检测全局配置

    [root@localhost /]# /usr/sbin/logrotate -dv /etc/logrotate.conf
    

    检测nginx配置

    [root@localhost /]# /usr/sbin/logrotate -dv /etc/logrotate.d/nginx
    

    强制执行

    [root@localhost /]# /usr/sbin/logrotate -fv /etc/logrotate.d/nginx
    

    二、使用Shell脚本切割日志

    [root@localhost /]# vim /usr/local/script/nginx_cutlog.sh
    

    写入如下内容:

    #!/bin/bash
    ## 零点执行该脚本
    ## Nginx 日志文件所在的目录
    LOGS_PATH=/home/nginx/log
    
    ## 获取昨天的 yyyy-MM-dd
    YESTERDAY=$(date -d last-day +%Y-%m-%d)
    
    ## 移动文件
    mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
    mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
    
    ## 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
    kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
    
    #删除7天前的日志
    cd ${LOGS_PATH}
    find ./ -mtime +7 -name "*20[0-9][0-9]*" | xargs rm -f
    
    #或者
    #find ./ -mtime +7 -name "*.log" | xargs rm -f
    exit 0
    

     [THE END]

  • 相关阅读:
    python截取视频中的某一段,保存为avi结尾的视频
    文章内容过长,将此内容转为pdf的方式(使用node)
    typescript常见问题集锦
    利用matplotlib中imshow()函数绘图
    如何查看Linux系统安装时间
    php包含那点事情[WOOYUN]
    中间人攻击利用框架bettercap测试
    java 递归方法
    java方法重载
    JVM 之栈结构
  • 原文地址:https://www.cnblogs.com/configure/p/7358829.html
Copyright © 2011-2022 走看看