读懂 Linux 上的 Node.js 日志,核心思路是:明确日志来源 → 看懂日志格式 → 结合上下文排查问题。下面按实用角度给你一个“读日志指南”。
Node.js 在 Linux 上的日志通常来自这几处:
console.log / console.error示例:
console.log('user login', userId);
console.error('db connect failed', err);
常见:
pm2 logs
pm2 logs app-name
journalctl -u your-node-service
journalctl -u your-node-service -f
/var/log/nginx/error.logdocker logs <container_id>
2026-01-15T10:22:31.123Z INFO server started on port 3000
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect (net.js:1146:16)
看出:
TypeError: Cannot read property 'id' of undefined
at handleRequest (/app/routes/user.js:12:20)
看:
| 级别 | 含义 | 关注点 |
|---|---|---|
| DEBUG | 调试信息 | 开发阶段 |
| INFO | 正常流程 | 启动、请求 |
| WARN | 潜在问题 | 慢查询、重试 |
| ERROR | 已出错 | 必看 |
| FATAL | 致命 | 服务即将挂 |
journalctl -u node-app -n 50
重点看:
req url + stacktop / htop
✅ 使用结构化日志(JSON)
{"level":"error","msg":"db failed","stack":"..."}
✅ 加 requestId
✅ 区分 stdout / stderr
✅ 日志按日期滚动(winston-daily-rotate)
Linux 上读 Node.js 日志 = 找对来源 + 看时间/级别/堆栈 + 结合系统日志。
如果你愿意,可以:
我可以帮你逐行解读。