温馨提示×

debian nodejs日志怎么定位错

小樊
48
2026-09-04 02:49:22
栏目: 编程语言

在 Debian 上定位 Node.js 日志和错误,通常可以从应用日志、系统日志、进程管理工具、运行时错误几个层面入手。下面按常见场景给你一个实战清单。


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

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

1. 直接运行

node app.js
  • 日志直接在终端输出
  • 错误会打印在 stderr

2. PM2 管理(最常见)

pm2 logs
pm2 logs app_name
pm2 logs --err   # 只看错误

日志默认在:

~/.pm2/logs/

3 systemd 服务

journalctl -u your-node-service
journalctl -u your-node-service -f   # 实时
journalctl -u your-node-service -p err

二、应用自身日志在哪里?

看代码里是怎么写的:

  • console.log / console.error
  • winston / pino / log4js
    • 一般配置在:
      /var/log/yourapp/
      ./logs/
      

快速搜日志文件:

find / -name "*.log" 2>/dev/null | grep node

三、系统级日志(Debian)

1. 系统日志

tail -f /var/log/syslog

(部分新系统用 journald)

2. 内核 / OOM 杀死进程

dmesg | grep -i "killed process"
journalctl | grep -i "out of memory"

四、Node.js 运行时错误定位技巧

1. 看完整错误栈

node app.js 2> error.log
cat error.log

重点看:

  • Error:
  • at Object.<anonymous>
  • errno

2. 开启调试

DEBUG=* node app.js
NODE_DEBUG=http,net node app.js

3. 未捕获异常

确保有:

process.on('uncaughtException', e => {
  console.error(e);
});
process.on('unhandledRejection', e => {
  console.error(e);
});

五、常见错误快速对照

现象 可能原因
EADDRINUSE 端口被占用
ENOENT 文件路径错
Cannot find module 依赖没装
进程自动退出 OOM / 未捕获异常
无日志 输出被重定向

六、推荐排查顺序(实战)

  1. pm2 logsjournalctl -u
  2. 看最近错误栈
  3. 搜关键字:Error / Exception / EADDRINUSE
  4. 确认是否是依赖/配置/权限问题
  5. stracenode --inspect 深入

如果你愿意,可以把:

  • 运行方式(pm2 / systemd / 直接 node)
  • 错误日志片段 发出来,我可以直接帮你精确定位。

0