温馨提示×

如何读懂linux nodejs日志

小樊
35
2026-09-17 18:06:01
栏目: 编程语言

读懂 Linux 上的 Node.js 日志,核心思路是:明确日志来源 → 看懂日志格式 → 结合上下文排查问题。下面按实用角度给你一个“读日志指南”。


一、先确认日志是从哪来的

Node.js 在 Linux 上的日志通常来自这几处:

1. 应用自身打印

  • console.log / console.error
  • 日志库(winston、pino、bunyan 等)

示例:

console.log('user login', userId);
console.error('db connect failed', err);

2. 进程管理器日志

常见:

  • PM2
    pm2 logs
    pm2 logs app-name
    
  • systemd
    journalctl -u your-node-service
    journalctl -u your-node-service -f
    

3. 反向代理 / 容器

  • Nginx:/var/log/nginx/error.log
  • Docker:
    docker logs <container_id>
    

二、看懂常见日志格式

1. 最基础日志

2026-01-15T10:22:31.123Z INFO  server started on port 3000
  • 时间(ISO 格式)
  • 日志级别(INFO / ERROR / WARN)
  • 消息内容

2. 错误日志(重点)

Error: connect ECONNREFUSED 127.0.0.1:5432
    at TCPConnectWrap.afterConnect (net.js:1146:16)

看出:

  • 错误类型:ECONNREFUSED
  • 目标:PostgreSQL(5432)
  • 原因:服务没启动或被拒绝

3. 未捕获异常

TypeError: Cannot read property 'id' of undefined
    at handleRequest (/app/routes/user.js:12:20)

看:

  • 出错文件 / 行号
  • 调用栈(从下往上看)

三、关键日志级别怎么看

级别 含义 关注点
DEBUG 调试信息 开发阶段
INFO 正常流程 启动、请求
WARN 潜在问题 慢查询、重试
ERROR 已出错 必看
FATAL 致命 服务即将挂

四、快速排查套路(实战)

1. 服务起不来

journalctl -u node-app -n 50

重点看:

  • 端口占用
  • 权限问题
  • 环境变量缺失

2. 接口报错

  • 看 Node 日志中的 req url + stack
  • 再看 Nginx 是否 502 / 504

3. 内存 / CPU 高

  • 日志中是否有:
    • 频繁 GC
    • 大对象序列化
  • 配合:
    top / htop
    

五、让日志更好读的建议

✅ 使用结构化日志(JSON)

{"level":"error","msg":"db failed","stack":"..."}

✅ 加 requestId ✅ 区分 stdout / stderr
✅ 日志按日期滚动(winston-daily-rotate)


六、一句话总结

Linux 上读 Node.js 日志 = 找对来源 + 看时间/级别/堆栈 + 结合系统日志。

如果你愿意,可以:

  • 贴一段真实日志
  • 或说你在 PM2 / Docker / systemd 环境

我可以帮你逐行解读

0