温馨提示×

debian nodejs日志怎查异常

小樊
51
2026-09-22 10:57:35
栏目: 编程语言

在 Debian 上排查 Node.js 日志和异常,通常可以从下面几个方面入手:


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

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

1. 直接命令行运行

node app.js

异常会直接输出在终端。

2. PM2 管理

pm2 logs
pm2 logs appname
pm2 describe appname   # 看日志路径

日志一般在:

~/.pm2/logs/

3 systemd 服务

查看服务名:

systemctl list-units --type=service | grep node

查看日志:

journalctl -u your-node-service.service -f
journalctl -u your-node-service.service --since "2024-01-01"

二、常见异常日志怎么看

1. 未捕获异常(Uncaught Exception)

日志示例:

Error: Cannot find module 'xxx'
    at Function.Module._resolveFilename

重点看:

  • Error: 后面内容
  • at ... 调用栈
  • 最上面一行通常是根因

2. Promise 未处理

UnhandledPromiseRejectionWarning

解决方式:

process.on('unhandledRejection', (reason) => {
  console.error('Unhandled Rejection:', reason);
});

3. 端口占用

EADDRINUSE: address already in use :::3000

查看占用:

sudo lsof -i:3000
# 或
ss -ltnp | grep 3000

三、Node.js 自身日志增强

1. 捕获全局异常

process.on('uncaughtException', (err) => {
  console.error('uncaughtException:', err);
});

2. 使用日志库(推荐)

  • winston
  • pino
  • bunyan

示例(winston):

const winston = require('winston');
winston.error('db connect failed', err);

四、系统层面排查

1. 看系统资源

top
free -h
df -h

2. 看是否被 OOM 杀掉

dmesg | grep -i "killed process"
journalctl -k | grep -i oom

五、快速定位问题步骤(建议顺序)

  1. 确认运行方式(pm2 / systemd / 手动)
  2. 看对应日志(pm2 logs 或 journalctl -f)
  3. 搜索关键字:Error / Exception / Reject / EADDRINUSE
  4. 检查端口、权限、依赖、环境变量
  5. 加全局异常捕获和日志库

如果你愿意,可以把具体的报错日志或**运行方式(pm2 / docker / systemd)**发出来,我可以直接帮你分析是哪一类问题。

0 踩