温馨提示×

如何读懂debian nodejs日志

小樊
47
2026-10-10 02:47:52
栏目: 编程语言

读懂 Debian 系统上 Node.js 的日志,通常需要先搞清楚 日志从哪里来、日志格式是什么、常见错误怎么看。下面按实用角度给你一个系统性的说明。


一、Node.js 日志通常出现在哪里?

1. 应用自己打印的日志(最常见)

如果你用 console.log / console.error:

console.log('server started');
console.error('db connect failed');

运行方式不同,日志位置不同:

启动方式 日志位置
前台运行 node app.js 终端直接输出
后台运行 node app.js > app.log 2>&1 & app.log
systemd 服务 journalctl -u your-service
PM2 pm2 logs
Docker docker logs 容器名

2. systemd 管理的 Node.js 服务(Debian 推荐)

如果 Node.js 是通过 systemd 启动的:

journalctl -u node-app.service

实时查看:

journalctl -u node-app.service -f

只看错误:

journalctl -u node-app.service -p err

3. Nginx / 反向代理日志(很关键)

如果 Node 前面有 Nginx:

/var/log/nginx/access.log
/var/log/nginx/error.log

常见情况:

  • 502 Bad Gateway → Node 没启动或端口不对
  • 404 → 路由问题
  • 超时 → Node 处理慢

二、Node.js 日志常见内容怎么读?

1. 普通信息日志

server listening on port 3000

✅ 正常启动


2. 错误信息(重点)

Error: connect ECONNREFUSED 127.0.0.1:5432

含义:

  • 连接数据库失败
  • PostgreSQL 在 5432,但没启动

3. 堆栈信息(Stack Trace)

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

怎么看:

  • 最上面是错误类型
  • 下面是调用链
  • 最下面通常是你写的代码位置

4. 未捕获异常

UnhandledPromiseRejectionWarning

说明:

  • Promise 没写 catch
  • 可能导致进程崩溃

三、推荐的日志查看命令(Debian)

实时看日志

tail -f /var/log/node/app.log

看最近的 100 行

tail -n 100 /var/log/node/app.log

搜索错误

grep -i error /var/log/node/app.log

四、如何让日志更好读?

1. 使用日志库(强烈推荐)

npm install winston

好处:

  • 时间
  • 级别(info / error)
  • 文件 + 控制台

2. 使用 PM2(生产常用)

pm2 start app.js
pm2 logs

五、排查问题的基本思路

  1. 先看 Node 日志
  2. 再看 systemd / nginx
  3. 确认端口、环境变量、数据库
  4. 看错误堆栈最后一行

如果你愿意,可以:

  • 贴一段 具体 Node.js 日志
  • 或说明你是 systemd / PM2 / Docker / 裸跑

我可以直接帮你“翻译”并定位问题。

0 踩