在 Linux 下分析 Node.js 日志,通常可以分为 日志来源确认 → 日志收集 → 日志分析工具 → 常见问题定位 几个步骤。下面从实战角度说明。
Node.js 的日志一般来自以下几处:
node app.js > app.log 2>&1
或
npm start >> app.log 2>&1
console.log / console.errorwinstonpinolog4jsmorgan(HTTP 请求日志)pm2 logs
pm2 logs app --lines 100
journalctl -u node-app.service -f
tail -f app.log
grep -i error app.log
grep -i "exception\|stack" app.log
grep -c "Error" app.log
sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log
grep "duration" app.log | awk '$NF>1000'
{"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
pm2 install pm2-logrotate
pm2 logs --json
Node.js → Promtail → Loki → Grafana
grep -i "heap" app.log
配合:
node --inspect
grep -i "uncaughtException" app.log
代码中应加:
process.on('uncaughtException', e => {
console.error(e);
});
结合 Morgan 日志:
grep "500" access.log
✅ 日志要包含:
✅ 生产环境:
如果你愿意,可以:
我可以直接帮你分析具体日志内容。