Nginx日志切割策略主要通过工具实现,核心目标是按规则分割日志文件,避免单个文件过大,便于管理与分析。以下是常见策略及实现方式:
kill -USR1)通知Nginx重新打开日志文件,确保服务不中断。/etc/logrotate.d/nginx中定义规则,例如:/var/log/nginx/*.log {
daily # 每天切割
rotate 30 # 保留30天日志
compress # 压缩旧日志
delaycompress # 延迟压缩
notifempty # 空日志不切割
create 0640 nginx nginx # 新日志权限与所有者
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid` # 通知Nginx重开日志
fi
endscript
}
daily(时间间隔)、rotate(保留数量)、compress(压缩)、postrotate(执行脚本)。/etc/cron.daily/logrotate)。#!/bin/bash
LOG_PATH="/var/log/nginx"
BACKUP_PATH="${LOG_PATH}/$(date -d 'yesterday' +%Y-%m-%d)"
mkdir -p "$BACKUP_PATH"
mv "${LOG_PATH}/access.log" "${BACKUP_PATH}/access.log.$(date -d 'yesterday' +%Y-%m-%d)"
gzip "${BACKUP_PATH}/access.log.$(date -d 'yesterday' +%Y-%m-%d)"
kill -USR1 $(cat /var/run/nginx.pid)
crontab -e添加每日执行,如0 0 * * * /path/to/script.sh。pid路径正确,可通过cat /var/run/nginx.pid获取。logrotate -d(debug模式)或logrotate -f(强制模式)。