导出 Nginx 中特定日志(如某时间段、某 IP、某接口、某状态码等),通常是对日志文件进行过滤 + 导出。下面按常见场景说明。
常见路径:
/var/log/nginx/access.log
/var/log/nginx/error.log
查看配置:
nginx -T | grep -E 'access_log|error_log'
awk '$4 >= "[21/Jan/2026:10:00:00" && $4 <= "[21/Jan/2026:12:00:00"' \
/var/log/nginx/access.log > access_20260121_10_12.log
$4是 Nginx 默认日志格式中的时间字段
grep '192.168.1.100' /var/log/nginx/access.log > ip_192.168.1.100.log
grep -v '192.168.1.100' /var/log/nginx/access.log > except_ip.log
grep '/api/login' /var/log/nginx/access.log > api_login.log
正则方式:
grep -E '/api/(login|logout)' access.log > api_auth.log
awk '$9 == 500' access.log > status_500.log
awk '$9 ~ /^4|^5/' access.log > error_status.log
grep -i 'bot' access.log > bot.log
grep '"POST' access.log > post.log
gzip access_20260121.log
或实时压缩:
awk '$4 >= "[21/Jan/2026:10:00:00"' access.log | gzip > part.log.gz
示例日志:
{"time":"2026-01-21T10:15:00+08:00","ip":"1.2.3.4","status":500}
按状态码导出:
jq 'select(.status == 500)' access.log > status_500.json
如果你能告诉我:
我可以直接给你可复制的命令。