龙空技术网

轻松实现Nginx访问日志按天归档,一键脚本助你高

脚本家园 772

前言:

如今你们对“nginx分时间切割日志”都比较重视,姐妹们都需要知道一些“nginx分时间切割日志”的相关知识。那么小编也在网摘上收集了一些有关“nginx分时间切割日志””的相关内容,希望小伙伴们能喜欢,小伙伴们快快来了解一下吧!

在运维工作中,Nginx的访问日志是我们了解服务器状态、分析用户行为的重要依据。然而,随着时间的推移,日志文件会不断增长,这不仅占用了大量的磁盘空间,还给日志分析和管理带来了诸多不便。因此,定期切割和归档Nginx的访问日志成为了一项必要的工作。

下面,我将为大家介绍一个简单实用的Bash脚本,它能够帮助你轻松实现Nginx访问日志的按天切割和归档。

脚本内容:

#!/bin/bash  # 定义日志存放目录  LOG_DIR=/usr/local/nginx/logs    # 获取昨天的日期  YESTERDAY_TIME=$(date -d "yesterday" +%F)    # 定义按月归档的日志目录格式  LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")    # 定义需要切割的日志文件列表  LOG_FILE_LIST="default.access.log"    # 循环处理每一个日志文件  for LOG_FILE in $LOG_FILE_LIST; do      # 如果按月归档的日志目录不存在,则创建它      [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR            # 将日志文件移动到按月归档的目录中,并在文件名后添加昨天的日期      mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}  done    # 发送USR1信号给Nginx主进程,使其重新打开日志文件  kill -USR1 $(cat /var/run/nginx.pid)
使用方法:将上述脚本保存为一个文件,例如log_rotate.sh。赋予脚本执行权限:chmod +x log_rotate.sh。通过cron定时任务每天执行该脚本,例如:0 0 * * * /path/to/log_rotate.sh(每天凌晨0点执行)。注意事项:请确保脚本中的LOG_DIR和/var/run/nginx.pid路径与你的Nginx配置一致。如果你的Nginx配置中使用了多个access_log,请在LOG_FILE_LIST中添加相应的日志文件名,多个文件名之间用空格分隔。该脚本使用了date命令的-d选项来获取昨天的日期,这在某些操作系统上可能不可用。如果遇到问题,请根据你的操作系统调整日期获取方式。脚本执行完毕后,Nginx会自动重新打开新的日志文件进行写入,而旧的日志文件则被归档到指定目录。你可以根据需要调整归档目录的结构和命名规则。

标签: #nginx分时间切割日志