温馨提示×

如何定位debian nodejs日志错误

小樊
37
2026-09-13 05:20:14
栏目: 编程语言

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


一、先确认 Node.js 应用在怎么跑

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

1. 直接命令行运行

node app.js
  • 错误直接打印在终端
  • 若重定向过:
node app.js > app.log 2>&1

日志在 app.log

2. 使用 PM2(最常见)

pm2 logs
pm2 logs app-name
pm2 info app-name   # 看错误日志路径

默认日志目录:

~/.pm2/logs/

3. 使用 systemd(服务方式)

systemctl status your-node-service
journalctl -u your-node-service -f
journalctl -u your-node-service --since "1 hour ago"

二、查看系统级日志(Debian)

1. journalctl(推荐)

sudo journalctl -xe
sudo journalctl -u node-app.service

2. 传统日志(老系统)

/var/log/syslog
/var/log/messages

三、Node.js 常见错误定位方法

1. 捕获未处理异常

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

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

2. 使用调试模式

node --trace-warnings app.js
node --inspect app.js

3. 打印错误堆栈

try {
  // code
} catch (err) {
  console.error(err.stack);
}

四、定位“启动失败 / 端口占用”

端口被占用

sudo netstat -tulnp | grep 3000
# 或
sudo lsof -i :3000

权限问题

Error: EACCES

→ 不要用 root 跑 Node,或改端口 / 目录权限


五、生产环境建议

  • 使用 PM2 + logrotate
  • 日志统一输出 JSON
  • 接入:
    • winston
    • pino
    • logrotate

六、快速排查清单(实战)

# 1. 看进程
ps aux | grep node

# 2. 看端口
sudo lsof -i :3000

# 3. 看 systemd
journalctl -u node-app -f

# 4. 看 PM2
pm2 logs

# 5. 手动跑一次
node app.js

如果你愿意,可以告诉我:

  • Node 是怎么启动的(PM2 / systemd / 直接跑)
  • 报错原文
  • Debian 版本

我可以直接帮你精准定位。

0