温馨提示×

nodejs日志在linux如何定位

小樊
37
2026-09-17 18:19:02
栏目: 编程语言

在 Linux 下定位 Node.js 日志和排查问题,通常可以从日志位置、运行方式、系统工具、常见排查手段几个方面入手。下面按实战流程给你一个清晰指南。


一、先确认 Node.js 是怎么跑的

不同启动方式,日志位置完全不同:

1. 直接命令行启动

node app.js
  • 日志默认输出在终端
  • 如果关闭终端,日志就丢了

✅ 建议重定向:

node app.js > app.log 2>&1 &

2. PM2 启动(最常见)

pm2 logs
pm2 logs appName

查看日志文件:

~/.pm2/logs/

常用:

pm2 list
pm2 describe appName
pm2 restart appName

3. 系统服务(systemd)

systemctl status node-app
journalctl -u node-app -f

日志位置:

/var/log/syslog
journalctl

4. Docker

docker logs -f container_id

二、常见 Node.js 日志位置

应用自己写的日志

常见目录:

/var/log/
/project/logs/
./logs/

例如:

  • logs/error.log
  • logs/access.log

Nginx 反向代理(常见)

/var/log/nginx/access.log
/var/log/nginx/error.log

三、Linux 常用定位命令(重点)

1. 实时看日志

tail -f app.log

2. 搜索错误

grep -i error app.log
grep -A 10 -B 5 "TypeError" app.log

3. 看进程

ps aux | grep node
top
htop

4. 看端口

netstat -tunlp | grep 3000
ss -lntp

5. 看资源占用

free -h
df -h
iotop

四、Node.js 崩溃怎么定位

1. 未捕获异常

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

2. 查看 core dump(高级)

ulimit -c unlimited
node --abort-on-uncaught-exception app.js

五、推荐日志方案(生产环境)

  • winston
  • pino(性能好)
  • log4js

示例:

const winston = require('winston')

输出到文件 + 控制台。


六、快速排查 checklist ✅

  1. 应用是否启动?
  2. 端口是否被占用?
  3. 日志里有没有 Error / Exception
  4. 是否被 PM2 / systemd 重启?
  5. 是否有 OOM(内存溢出)?

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

  • 你是怎么启动 Node.js 的(PM2 / systemd / docker)
  • 报错内容或日志片段

我可以直接帮你精准定位问题

0