溫馨提示×

nginx日志切割方法介紹

小樊
72
2025-04-10 11:05:13
欄目: 編程語言

Nginx 日志切割對于日志管理和系統維護至關重要。以下是幾種常見的 Nginx 日志切割方法:

使用 logrotate 進行日志切割

logrotate 是 Linux 系統中用于管理日志文件的工具,可以按時間或大小對日志文件進行切割、壓縮和清理。以下是使用 logrotate 進行 Nginx 日志切割的步驟:

  1. 創建 logrotate 配置文件: 在 /etc/logrotate.d/ 目錄下創建一個新的配置文件,例如 nginx。配置文件示例如下:

    /var/log/nginx/access.log {
        daily            # 按天切割日志
        rotate 30        # 保留 30 個日志文件
        missingok        # 如果日志文件不存在,則不報錯
        notifempty      # 如果日志文件為空,則不進行輪替
        compress         # 壓縮舊日志文件
        delaycompress    # 延遲壓縮上一個周期的日志文件
        create 0640 www-data www-data # 新日志文件的權限和所有者
        sharedscripts    # 共享腳本,等 access 和 error 兩個日志都輪轉之后再執行下面的腳本
        postrotate
            if [ -f /var/run/nginx.pid ]; then
                kill -USR1 $(cat /var/run/nginx.pid) # 向 Nginx 發送 USR1 信號,重開日志文件
            fi
        endscript
    }
    
    /var/log/nginx/error.log {
        daily            # 按天切割日志
        rotate 30        # 保留 30 個日志文件
        missingok        # 如果日志文件不存在,則不報錯
        notifempty      # 如果日志文件為空,則不進行輪替
        compress         # 壓縮舊日志文件
        delaycompress    # 延遲壓縮上一個周期的日志文件
        create 0640 www-data www-data # 新日志文件的權限和所有者
        sharedscripts    # 共享腳本
        postrotate
            if [ -f /var/run/nginx.pid ]; then
                kill -USR1 $(cat /var/run/nginx.pid) # 重啟 Nginx 日志進程
            fi
        endscript
    }
    
  2. 測試配置: 使用以下命令測試配置文件是否正確:

    sudo logrotate -vf /etc/logrotate.conf
    
  3. 設置定時任務: 使用 crontab 設置定時任務,使 logrotate 每天執行日志切割。例如,每天凌晨 0 點執行:

    0 0 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx
    

使用腳本進行日志切割

除了使用 logrotate,還可以編寫自定義腳本來實現日志切割。以下是一個簡單的 Bash 腳本示例:

#!/bin/bash

# 指定日志路徑和備份目錄
LOG_PATH="/usr/local/nginx/logs"
BACKUP_PATH="/var/log/nginx/backup"

# 獲取當前日期并生成備份目錄
DATE=$(date +"%Y-%m-%d")
BACKUP_DIR="$BACKUP_PATH/$DATE"

# 創建備份目錄
mkdir -p "$BACKUP_DIR"

# 移動并重命名日志文件
mv "$LOG_PATH/access.log" "$BACKUP_DIR/access_$DATE.log"
mv "$LOG_PATH/error.log" "$BACKUP_DIR/error_$DATE.log"

# 通知 Nginx 重新生成新的日志文件
kill -USR1 $(cat "$LOG_PATH/nginx.pid")
  1. 設置定時任務: 使用 crontab 設置定時任務,使腳本每天執行日志切割。例如,每天凌晨 1 點執行:

    0 1 * * * /path/to/your/script.sh
    

驗證日志切割

無論使用哪種方法,都可以通過以下命令驗證日志切割是否按預期工作:

  • 檢查日志文件是否已切割:

    tail -n 4 /var/log/nginx/access.log
    tail -n 4 /var/log/nginx/access.log.1
    
  • 重新加載 Nginx 配置以應用更改:

    sudo nginx -s reload
    

通過以上方法,可以有效地管理和維護 Nginx 日志文件,確保系統的穩定性和性能。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女