温馨提示×

怎么读懂debian nodejs日志

小樊
35
2026-09-13 05:31:17
栏目: 编程语言

读懂 Debian 系统上 Node.js 的日志,关键先看日志从哪里来,再看日志里写了什么。下面按常见场景给你一个实用指南。


一、Node.js 日志通常来自哪里

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

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

默认输出位置:

  • 前台运行:终端
  • 后台运行:可能重定向到文件或 systemd

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

如果你用 systemctl 启动 Node.js:

systemctl status mynodeapp
journalctl -u mynodeapp
journalctl -u mynodeapp -f

说明:

  • journalctl 是 Debian 的日志系统
  • -f 实时跟踪
  • 日志包含:启动时间、PID、错误堆栈

3. PM2 管理的 Node.js

pm2 logs
pm2 logs appname
pm2 logs --lines 100

PM2 日志默认在:

~/.pm2/logs/

4. 容器 / Docker

docker logs container_name
docker logs -f container_name

二、怎么“读懂”日志内容

1. 看日志级别

常见级别(从左到右严重度递增):

INFO < WARN < ERROR < FATAL

示例:

ERROR Cannot read properties of undefined (reading 'id')

→ 说明代码访问了不存在的对象


2. 看错误堆栈(最重要)

Node.js 错误通常长这样:

TypeError: Cannot read property 'x' of undefined
    at app.get (/var/www/app/index.js:23:15)

怎么读:

  • TypeError → 类型错误
  • index.js:23:15 → 文件第 23 行第 15 列
  • 从下往上找你自己的代码(不是 node 内部)

3. 看时间戳

Debian 日志通常带时间:

Mar 15 10:22:31 node[1234]: Server started on port 3000

用途:

  • 判断是否重启
  • 是否和请求高峰相关

4. 看请求类日志

如果是 Web 服务(Express / NestJS):

GET /api/user 500 12ms

含义:

  • 方法:GET
  • 路径:/api/user
  • 状态码:500(服务器错误)
  • 耗时:12ms

三、常见 Node.js 错误速查

日志内容 含义
EADDRINUSE 端口被占用
Cannot find module 依赖没装
UnhandledPromiseRejection Promise 没 catch
ETIMEDOUT 网络/数据库超时
SIGTERM 被系统停止(正常)

四、推荐做法(Debian 上更省心)

  1. 用 systemd 跑 Node.js
  2. 日志统一走 journalctl
  3. 应用内用 winston / pino
  4. 不自己写文件日志(除非必要)

如果你愿意,可以把一段真实日志贴出来,我可以直接帮你逐行解释是哪出了问题。

0