温馨提示×

如何分析Ubuntu Nodejs日志

小樊
42
2026-07-10 05:16:00
栏目: 编程语言

在 Ubuntu 上分析 Node.js 日志,通常取决于日志是如何产生的(console、文件、PM2、Docker、systemd 等)。下面按常见场景给你一个完整、实用的分析指南。


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

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

node app.js
  • 日志默认输出到 stdout / stderr
  • 如果没重定向,通常不落盘

✅ 常见做法:

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

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

如果你用 PM2 管理 Node.js:

pm2 logs
pm2 logs app-name

PM2 日志默认位置:

~/.pm2/logs/

常见文件:

  • app-name-out.log
  • app-name-error.log

3️⃣ systemd 服务

如果是 systemd 启动的 Node.js:

journalctl -u your-node-service
journalctl -u your-node-service -f

查看实时日志:

journalctl -u your-node-service -f --since "5 min ago"

4️⃣ Docker 容器

docker logs container_id
docker logs -f container_id

二、日志分析常用命令(核心)

1️⃣ 实时查看日志

tail -f app.log

PM2:

pm2 logs --lines 100

2️⃣ 查找错误

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

按时间:

grep "2026-01-21" app.log

3️⃣ 查看最近 N 行

tail -n 200 app.log

4️⃣ 统计错误数量

grep -c "Error" app.log

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

如果是 HTTP 日志:

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

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

✅ 如果使用了 JSON 日志(如 Winston / Pino)

示例:

{"level":"error","message":"DB failed","stack":"..."}

分析方式:

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

四、Node.js 日志最佳实践(很重要)

✅ 使用日志库(不要只用 console.log)

推荐:

  • Winston(最常用)
  • Pino(高性能)

示例(Winston):

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

五、日志分析进阶工具

1️⃣ 日志聚合

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Fluent Bit

适合生产环境


2️⃣ 自动化错误监控

  • Sentry
  • Datadog
  • New Relic

六、常见问题排查思路

❌ 服务崩溃

grep -i "uncaughtException" app.log
journalctl -u node-app --since today

❌ 内存泄漏

grep -i "heap" app.log

配合:

node --inspect

❌ 请求慢

grep "duration" app.log

七、快速诊断清单 ✅

场景 命令
实时日志 tail -f / pm2 logs
报错 grep -i error
systemd journalctl -u
Docker docker logs
JSON 日志 jq

八、如果你愿意,我可以进一步帮你

你可以直接告诉我:

  • ✅ 你是怎么启动 Node.js 的(PM2 / systemd / Docker)
  • ✅ 日志格式(文本 / JSON)
  • ✅ 想分析什么问题(崩溃 / 性能 / 请求失败)

我可以给你针对性的分析命令和排查方案

0