温馨提示×

怎么定位Ubuntu Nodejs日志

小樊
35
2026-07-21 18:40:43
栏目: 编程语言

在 Ubuntu 上定位 Node.js 日志时,通常可以从应用自身日志、进程管理器日志、系统日志、容器日志这几个方向来查。下面按常见场景给你一个快速定位指南。


一、先看 Node.js 应用自己打的日志

1. 应用代码里有没有日志输出

常见方式:

  • console.log / console.error
  • 日志库:winstonpinobunyanmorgan(HTTP)

如果代码里写了文件日志,比如:

const fs = require('fs');
fs.writeFileSync('/var/log/myapp/app.log', 'xxx');

那就直接去对应路径:

cat /var/log/myapp/app.log
tail -f /var/log/myapp/app.log

二、如果你用 PM2 管理 Node.js(最常见)

1. 查看 PM2 日志目录

pm2 logs

只看某个应用:

pm2 logs app_name

2. PM2 日志默认位置

~/.pm2/logs/

例如:

app-error.log
app-out.log

3. 查看日志路径

pm2 info app_name

三、如果你用 systemd(服务方式运行)

1. 查看服务日志

journalctl -u your-node-service-name -f

2. 查看全部 Node 相关日志

journalctl -t node -f

3. 查看系统日志

tail -f /var/log/syslog

(Ubuntu 20.04+ 可能是 /var/log/syslogjournalctl


四、Docker / 容器中的 Node.js

1. Docker 容器日志

docker logs container_id
docker logs -f container_id

2. Docker Compose

docker-compose logs -f node

五、Nginx 反向代理时的日志(常见)

如果 Node 前面有 Nginx:

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

有些 Node 报错其实是 502 / 504,要从 Nginx 看。


六、Node.js 崩溃但没日志?

1. 捕获未处理异常

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

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

2. 查看是否被系统杀掉

dmesg | grep -i node

(OOM 被杀常见)


七、快速定位思路(推荐顺序)

  1. PM2?
    pm2 logs
    
  2. systemd?
    journalctl -u xxx -f
    
  3. Docker?
    docker logs xxx
    
  4. Nginx?
    /var/log/nginx/
    
  5. 应用自己写的日志路径

八、实用排查命令速查

ps aux | grep node
lsof -i :3000
netstat -tlnp | grep node
tail -f 日志文件

如果你愿意,可以把下面信息发我,我可以直接帮你精确定位

  • 怎么启动 Node 的(PM2 / systemd / Docker / 手动)
  • 报错现象(502 / 崩溃 / 无响应)
  • Node 版本:node -v
  • Ubuntu 版本:lsb_release -a

我可以一步一步带你查 ✅

0