温馨提示×

ubuntu nodejs日志如何排查

小樊
40
2026-09-27 17:02:20
栏目: 编程语言

在 Ubuntu 上排查 Node.js 日志,通常可以从应用日志、系统日志、进程状态、运行时错误几个层面入手。下面按实用顺序给你一套排查思路。


一、先确认 Node.js 进程状态

1. 查看进程是否在运行

ps -ef | grep node
# 或
top

2. 查看端口占用(如 3000)

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

二、查看 Node.js 应用日志

1. 直接前台运行看报错(最直观)

node app.js

2. 如果是后台运行(nohup / pm2 / systemd)

nohup 方式

cat nohup.out

pm2(最常见)

pm2 logs
pm2 logs app-name
pm2 list
pm2 describe app-name

自定义日志文件

查看代码或启动脚本中是否写了:

fs.createWriteStream('/var/log/node/app.log')

或:

tail -f /var/log/node/app.log

三、查看系统级日志(非常重要)

1. systemd 管理的 Node 服务

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

常见错误:

  • Cannot find module
  • EADDRINUSE
  • Permission denied

四、常见 Node.js 错误排查

1. 端口被占用

Error: listen EADDRINUSE :::3000

解决:

sudo lsof -i:3000
kill -9 PID

2. 权限不足

EACCES: permission denied

解决:

  • 不要用 sudo node
  • 使用非 1024 以下端口
  • 或修改文件权限

3. 内存溢出(OOM)

FATAL ERROR: Ineffective mark-compacts

查看系统日志:

dmesg | grep -i oom

解决:

node --max-old-space-size=1024 app.js

4. 未捕获异常导致退出

代码里加:

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

五、开启详细日志(调试)

1. Node 调试日志

NODE_DEBUG=http,net,fs node app.js

2. 使用 debug 模块

DEBUG=* node app.js

六、推荐的标准做法(生产环境)

  • ✅ 使用 pm2 或 systemd
  • ✅ 日志集中到 /var/log/
  • ✅ 使用 winston / pino 写结构化日志
  • ✅ 接入 ELK / Loki / Grafana

七、快速排查清单

# 1. 进程
ps -ef | grep node

# 2. 日志
pm2 logs
journalctl -u node-app -f

# 3. 端口
sudo lsof -i:3000

# 4. 系统错误
dmesg | tail

如果你能提供:

  • 启动方式(pm2 / systemd / nohup)
  • 报错日志内容
  • Ubuntu 版本 & Node 版本

我可以帮你精准定位问题。

0 踩