温馨提示×

怎样读懂debian nodejs日志内容

小樊
40
2026-09-19 08:47:44
栏目: 编程语言

读懂 Debian 系统上 Node.js 日志,一般可以从「日志来源日志格式常见内容含义排查方法」四个层面入手。下面用通俗方式讲清楚。


一、先搞清楚:Node.js 日志从哪里来?

在 Debian 上,Node.js 日志通常来自这几处:

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

  • console.log / console.error
  • 日志库(如 winstonpinobunyan
  • 日志文件通常在:
    /var/log/yourapp/
    ~/yourapp/logs/
    

2. 系统服务日志(用 systemd 启动)

如果 Node.js 是用 systemd 管理的:

journalctl -u yourapp.service

或实时看:

journalctl -u yourapp.service -f

3. 反向代理日志(Nginx / Apache)

Node 前面通常有 Nginx:

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

4. 内核 / 系统级错误

比如端口占用、OOM:

dmesg | tail

二、Node.js 日志常见格式怎么读?

示例 1:简单 console 日志

2026-01-15 10:23:12 Error: connect ECONNREFUSED 127.0.0.1:6379

含义:

  • 时间
  • 错误类型
  • 连接被拒绝(Redis 没启动)

示例 2:带堆栈的日志

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

重点看:

  • 最后一行你写的代码
  • 不是 Node 内部代码

示例 3:生产环境结构化日志(JSON)

{
  "level": "error",
  "time": "2026-01-15T10:23:12Z",
  "msg": "DB timeout",
  "pid": 1234
}

jq 看更清楚:

cat app.log | jq .

三、常见 Node.js 日志关键词速查

日志内容 含义
ECONNREFUSED 服务没启动 / 端口错
EADDRINUSE 端口被占用
ETIMEDOUT 网络/数据库慢
Cannot find module 依赖没装
UnhandledPromiseRejection Promise 没 catch
Out Of Memory 内存泄漏
SIGTERM 被系统杀掉(常见 OOM)

四、在 Debian 上怎么“读懂 + 排查”?

1. 看 Node 是不是 systemd 起的

systemctl status yourapp
journalctl -u yourapp -n 100

2. 实时看日志

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

3. 报错时优先看 error,不是 info

grep -i error app.log

4. 看是不是资源问题

free -h
df -h
top

五、一个“读日志”的标准思路

  1. 时间对不对(是不是当前问题)
  2. 错误类型是什么
  3. 堆栈最后一行是不是你的代码
  4. 前后日志有没有上下文
  5. 是不是系统/网络/依赖问题

如果你愿意,可以把一段真实日志贴出来(删掉敏感信息),我可以直接帮你“逐行翻译”并告诉你问题在哪、怎么修。

0