温馨提示×

怎样导出nginx特定日志

小樊
60
2026-10-02 16:30:03
栏目: 编程语言

导出 Nginx 中特定日志(如某时间段、某 IP、某接口、某状态码等),通常是对日志文件进行过滤 + 导出。下面按常见场景说明。


一、Nginx 日志文件位置

常见路径:

/var/log/nginx/access.log
/var/log/nginx/error.log

查看配置:

nginx -T | grep -E 'access_log|error_log'

二、按“时间段”导出日志(最常用)

示例:导出 2026-01-21 10:00 ~ 12:00 的访问日志

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 默认日志格式中的时间字段


三、按“IP”导出日志

导出某个 IP 的所有访问

grep '192.168.1.100' /var/log/nginx/access.log > ip_192.168.1.100.log

导出非某 IP 的日志

grep -v '192.168.1.100' /var/log/nginx/access.log > except_ip.log

四、按“请求接口 / URL”导出

grep '/api/login' /var/log/nginx/access.log > api_login.log

正则方式:

grep -E '/api/(login|logout)' access.log > api_auth.log

五、按“HTTP 状态码”导出

导出 500 错误

awk '$9 == 500' access.log > status_500.log

导出 4xx / 5xx

awk '$9 ~ /^4|^5/' access.log > error_status.log

六、按“User-Agent / 爬虫”导出

grep -i 'bot' access.log > bot.log

七、按“POST 请求”导出

grep '"POST' access.log > post.log

八、压缩导出(节省空间)

gzip access_20260121.log

或实时压缩:

awk '$4 >= "[21/Jan/2026:10:00:00"' access.log | gzip > part.log.gz

九、如果使用了 json 日志格式

示例日志:

{"time":"2026-01-21T10:15:00+08:00","ip":"1.2.3.4","status":500}

按状态码导出:

jq 'select(.status == 500)' access.log > status_500.json

十、导出后常见用途

  • 丢给开发排查问题
  • 接入 ELK / Loki
  • 做访问统计
  • 安全审计(爆破、爬虫)

如果你能告诉我:

  • ✅ 日志格式(默认 / json)
  • ✅ 想按什么维度导出(时间 / IP / 接口 / 状态)
  • ✅ Nginx 是否在容器里

我可以直接给你可复制的命令。

0 踩