温馨提示×

Ubuntu Nodejs日志怎么分析

小樊
46
2026-08-05 09:34:52
栏目: 编程语言

在 Ubuntu 上分析 Node.js 日志,通常取决于你日志写入方式(console、文件、PM2、Docker、systemd 等)。下面按常见场景给你一套实用分析思路 + 命令


一、先搞清楚:Node.js 日志在哪?

1️⃣ 直接运行 Node.js(最常见)

node app.js
  • 日志一般在 终端输出
  • 如果没有重定向,不会自动保存

✅ 常见做法:

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

2️⃣ 使用 PM2(强烈推荐)

如果你用 PM2 管理 Node.js:

pm2 logs
pm2 logs app-name

日志路径:

~/.pm2/logs/

常用:

pm2 logs --lines 100
pm2 flush   # 清空日志

3️⃣ systemd 服务

如果是 systemd 启动的 Node.js:

journalctl -u your-node-service

实时查看:

journalctl -u your-node-service -f

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

1️⃣ 查看日志

cat app.log
less app.log
tail -f app.log   # 实时

2️⃣ 查找错误

grep -i error app.log
grep -i "exception" app.log
grep -i "failed" app.log

只看最近 200 行:

tail -n 200 app.log | grep ERROR

3️⃣ 统计错误数量

grep -c ERROR app.log

4️⃣ 查看某段时间日志

grep "2025-01-20" app.log

5️⃣ 分析请求 / 接口日志

如果是 HTTP 日志:

grep "POST /api" app.log
grep "500" app.log

统计 500 错误:

grep " 500 " app.log | wc -l

三、结构化日志分析(JSON 日志)

如果 Node.js 使用 JSON 日志(如 pino、winston json):

cat app.log | jq '.level'

过滤 ERROR 级别:

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

四、性能 & 异常分析

1️⃣ 看 Event Loop / 内存问题

日志中常见关键词:

  • heap out of memory
  • GC
  • timeout
  • ETIMEDOUT

配合:

dmesg | grep node

2️⃣ 查看 Node.js 崩溃原因

grep -i "crash" app.log
grep -i "signal" app.log

PM2:

pm2 list
pm2 show app-name

五、推荐日志最佳实践(避免难分析)

✅ 使用日志库:

  • winston
  • pino(高性能)

✅ 日志至少包含:

{
  "level": "error",
  "time": "2025-01-20T10:00:00Z",
  "message": "DB connection failed",
  "stack": "..."
}

✅ 按级别分文件:

error.log
info.log

六、可视化分析(进阶)

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • PM2 + Keymetrics

七、快速排查流程(实战)

# 1. 看是否在运行
pm2 list

# 2. 看最新日志
pm2 logs --lines 100

# 3. 搜索错误
grep -i error ~/.pm2/logs/app-error.log

# 4. 看系统资源
top / htop

如果你愿意,可以告诉我:

  • ✅ Node.js 是怎么启动的(PM2 / Docker / systemd)
  • ✅ 日志格式(普通文本 / JSON)
  • ✅ 想分析什么问题(崩溃 / 慢 / 接口报错)

我可以直接帮你针对你的环境写分析命令

0