# nginx 日志怎么定時切割
## 為什么需要日志切割
Nginx作為高性能的Web服務器,默認會將所有訪問日志和錯誤日志寫入單個文件(如`access.log`和`error.log`)。長期運行會導致:
1. **日志文件過大**:可能占用數十GB磁盤空間
2. **檢索困難**:大文件難以用文本工具打開分析
3. **影響性能**:頻繁寫入大文件可能降低I/O效率
4. **維護不便**:無法按時間維度歸檔歷史日志
日志切割(Log Rotation)通過定期分割、壓縮和歸檔日志文件解決這些問題。
---
## 手動切割方案
### 1. 使用mv+reload基礎方法
```bash
# 重命名當前日志文件
mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%Y%m%d).log
# 發送USR1信號讓Nginx重新打開日志文件
kill -USR1 $(cat /var/run/nginx.pid)
缺點:需要手動操作,不適合生產環境
Linux系統自帶的logrotate是更專業的解決方案:
/var/log/nginx/*.log {
daily # 按天切割
missingok # 日志不存在時不報錯
rotate 30 # 保留30個歷史版本
compress # 使用gzip壓縮
delaycompress # 延遲一天壓縮
notifempty # 空文件不切割
sharedscripts # 所有日志處理完后執行腳本
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
dateext # 使用日期作為后綴
dateformat -%Y%m%d # 日期格式
}
| 參數 | 作用 |
|---|---|
| size 100M | 按大小切割 |
| hourly | 每小時切割(需安裝cronhourly) |
| weekly | 按周切割 |
| monthly | 按月切割 |
| create 0640 www-data adm | 設置新日志文件權限 |
# 調試模式測試(不實際執行)
logrotate -d /etc/logrotate.d/nginx
# 強制立即運行
logrotate -vf /etc/logrotate.d/nginx
# 每天凌晨執行
0 0 * * * /usr/sbin/logrotate /etc/logrotate.d/nginx
創建/etc/systemd/system/nginx-logrotate.timer:
[Unit]
Description=Daily rotation of Nginx logs
[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true
[Install]
WantedBy=timers.target
服務單元/etc/systemd/system/nginx-logrotate.service:
[Unit]
Description=Nginx log rotation
[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /etc/logrotate.d/nginx
啟用定時器:
systemctl enable --now nginx-logrotate.timer
/var/log/nginx/*.log {
hourly
rotate 24
dateext
dateformat -%Y%m%d%H
...
}
需確保/etc/cron.hourly/有logrotate任務。
create 0640 www-data adm
olddir /var/log/nginx/archive/
prerotate
/usr/bin/nginx-log-analyser /var/log/nginx/access.log > /tmp/last_report
endscript
解決方法:
1. 確認postrotate腳本正確執行
2. 檢查nginx進程用戶有日志目錄寫入權限
3. 使用lsof | grep nginx確認文件描述符是否釋放
建議:
rotate 7
size 500M
# 在logrotate配置前添加
export TZ=Asia/Shanghai
delaycompress避免高峰時段CPU占用Nginx日志切割最佳實踐組合: 1. logrotate作為核心工具 2. crontab/systemd timer實現自動化 3. 合理的保留策略(時間+大小雙重限制) 4. 完善的監控(日志增長報警)
通過合理配置,可以確保: ? 日志文件大小可控 ? 歷史數據可追溯 ? 系統性能不受影響 ? 存儲空間高效利用 “`
(全文約1300字)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。