清洗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通知进程重新打开日志,否则可能导致写入失败。