清洗Nginx日志數據可通過以下方式實現,分為無效數據清洗和**日志管理(切割/刪除)**兩類:
通過腳本或工具過濾無效內容(如錯誤格式、特定關鍵字),保留結構化數據。
log_format配置)。import re
with open('/var/log/nginx/access.log', 'r') as f:
lines = f.readlines()
pattern = re.compile(r'invalid_data') # 替換為實際無效數據模式
with open('/var/log/nginx/cleaned_access.log', 'w') as f:
f.writelines([line for line in lines if not pattern.search(line)])
通過工具自動切割日志并刪除過期文件,避免磁盤占滿。
/etc/logrotate.d/nginx:/var/log/nginx/*.log {
daily
rotate 7
compress
missingok
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
logrotate -f /etc/logrotate.d/nginx。> /var/log/nginx/access.log
> /var/log/nginx/error.log
nginx -s reload # 重新加載Nginx
cron定期刪除超過指定天數的日志(如30天)。# 示例腳本(保存為clean_nginx_logs.sh)
find /var/log/nginx/ -type f -name "*.log.*" -mtime +30 -exec rm -f {} \;
nginx -s reload
添加定時任務:crontab -e,添加0 0 * * * /path/to/script.sh。kill -USR1通知進程重新打開日志,否則可能導致寫入失敗。