温馨提示×

如何解读debian nodejs日志

小樊
37
2026-09-01 06:38:17
栏目: 编程语言

在 Debian 系统上,Node.js 日志的解读方式取决于你是如何运行 Node.js 应用的(直接用 node、用 systemd、用 PM2、用 Docker 等)。下面我按常见场景系统讲一下如何查看和解读。


一、先确认 Node.js 应用是怎么运行的

1. 直接用命令行运行

node app.js

日志会直接输出在终端(stdout / stderr)。

常见内容:

  • console.log() → 普通信息
  • console.error() → 错误
  • 未捕获异常 → 堆栈信息

2. 使用 systemd(最常见于 Debian 服务)

如果 Node.js 是系统服务(如通过 .service 文件):

sudo systemctl status yourapp
sudo journalctl -u yourapp -f

查看完整日志:

sudo journalctl -u yourapp --since "1 hour ago"

日志示例解读:

Jul 10 10:00:01 debian node[1234]: Error: connect ECONNREFUSED 127.0.0.1:5432

含义:

  • 时间:Jul 10 10:00:01
  • 主机:debian
  • 进程:node(PID 1234)
  • 错误:无法连接 PostgreSQL(端口 5432)

3. 使用 PM2(生产环境常见)

查看日志:

pm2 logs
pm2 logs appname

PM2 日志通常在:

~/.pm2/logs/

日志文件:

  • appname-out.log → 正常输出
  • appname-error.log → 错误

PM2 还会记录:

  • 重启次数
  • 内存占用
  • 崩溃原因

4. Docker 中运行 Node.js

docker logs container_name -f

或:

docker compose logs -f

二、Node.js 日志常见内容解读

1. 启动日志

Server running on port 3000

✅ 正常


2. 未捕获异常

TypeError: Cannot read properties of undefined (reading 'id')
    at app.js:25:10

说明:

  • 代码第 25 行访问了 undefined.id
  • 通常是请求参数或数据库返回为空

3. 依赖或模块错误

Error: Cannot find module 'express'

解决:

npm install

4. 端口占用

Error: listen EADDRINUSE: address already in use :::3000

解决:

sudo lsof -i :3000
kill -9 PID

5. 权限错误(Debian 常见)

EACCES: permission denied, open '/var/log/app.log'

解决:

  • sudo
  • 或修改目录权限
  • 不要用 root 跑 Node(安全建议)

三、Node.js 日志级别(如果你用了 Winston / Pino)

常见级别(从低到高):

debug < info < warn < error < fatal

示例:

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

四、实用排查建议

✅ 快速定位问题

journalctl -u yourapp | grep -i error

✅ 实时观察

tail -f /var/log/yourapp.log

✅ 看崩溃原因

  • PM2:pm2 describe appname
  • systemd:journalctl -u yourapp -b

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

你可以告诉我:

  1. 你的 Node.js 是怎么运行的(systemd / PM2 / docker / 直接跑)
  2. 具体的日志内容(贴一段)
  3. 应用类型(Web / API / 脚本)

我可以直接帮你逐行解读并给出解决办法

0