温馨提示×

linux下nodejs日志怎么分析

小樊
39
2026-09-17 17:40:01
栏目: 编程语言

在 Linux 下分析 Node.js 日志,通常可以分为 日志来源确认 → 日志收集 → 日志分析工具 → 常见问题定位 几个步骤。下面从实战角度说明。


一、确认日志来源

Node.js 的日志一般来自以下几处:

1. 控制台输出(最常见)

node app.js > app.log 2>&1

npm start >> app.log 2>&1

2. 框架/日志库

  • console.log / console.error
  • winston
  • pino
  • log4js
  • morgan(HTTP 请求日志)

3. 进程管理工具

  • PM2
    pm2 logs
    pm2 logs app --lines 100
    
  • systemd
    journalctl -u node-app.service -f
    

二、基础日志分析命令(Linux 必备)

1. 实时查看日志

tail -f app.log

2. 查看错误日志

grep -i error app.log
grep -i "exception\|stack" app.log

3. 统计错误出现次数

grep -c "Error" app.log

4. 按时间范围过滤

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log

5. 查看某接口慢请求(如 >1s)

grep "duration" app.log | awk '$NF>1000'

三、结构化日志分析(推荐)

使用 JSON 日志(pino / winston)

{"level":"error","time":"2026-01-21T10:00:00Z","msg":"DB timeout"}

分析方式:

jq 'select(.level=="error")' app.log

统计错误类型:

jq -r '.msg' app.log | sort | uniq -c | sort -nr

四、使用日志分析工具

1. PM2(开发/测试常用)

pm2 install pm2-logrotate
pm2 logs --json

2. ELK(生产推荐)

  • Filebeat 收集日志
  • Elasticsearch 存储
  • Kibana 可视化

3. Loki + Grafana(轻量级)

Node.js → Promtail → Loki → Grafana

五、Node.js 常见问题日志定位

1. 内存泄漏

grep -i "heap" app.log

配合:

node --inspect

2. 未捕获异常

grep -i "uncaughtException" app.log

代码中应加:

process.on('uncaughtException', e => {
  console.error(e);
});

3. 接口 500 错误

结合 Morgan 日志:

grep "500" access.log

六、实用建议

✅ 日志要包含:

  • 时间(ISO)
  • 日志级别
  • 请求 ID
  • 用户 ID(如适用)

✅ 生产环境:

  • 不打印敏感信息
  • 日志轮转(logrotate / pm2-logrotate)

如果你愿意,可以:

  • 发一段 真实 Node.js 日志
  • 或说明你用的是 PM2 / Docker / systemd / K8s

我可以直接帮你分析具体日志内容。

0