温馨提示×

linux中nodejs日志咋定位

小樊
38
2026-10-08 11:06:39
栏目: 编程语言

在 Linux 下定位 Node.js 日志,通常可以按下面几个层次来做:进程日志在哪里 → 运行时报错怎么看 → 如何排查问题。


一、Node.js 日志一般都在哪?

1️⃣ 应用自己写的日志

最常见,取决于你用的日志方案:

  • console.log / console.error
  • 日志库:
    • winston
    • pino
    • log4js
    • bunyan

常见位置:

/var/log/xxx/
/opt/xxx/logs/
~/project/logs/

查看:

ls -lh /var/log/your-app/
tail -f /var/log/your-app/app.log

2️⃣ 使用 PM2 启动的 Node 服务

PM2 自带日志管理:

pm2 logs
pm2 logs app-name
pm2 logs --lines 100

日志文件路径:

~/.pm2/logs/

3️⃣ 使用 systemd 管理的 Node 服务

如果你是用 systemctl 启动的:

journalctl -u your-node-service
journalctl -u your-node-service -f
journalctl -u your-node-service --since "2024-01-01"

查看服务文件:

systemctl cat your-node-service

4️⃣ Docker 容器里的 Node 日志

docker logs container_name
docker logs -f container_name
docker logs --tail 200 container_name

二、Node.js 报错怎么快速定位?

1️⃣ 看错误栈(stack trace)

Node 报错通常会包含:

at Function.Module._resolveFilename
at /app/server.js:23:10

重点看:

  • 哪个文件
  • 哪一行
  • 是哪个函数调用链

2️⃣ 开启详细日志

DEBUG=* node app.js
NODE_ENV=development node app.js

如果是 Express:

DEBUG=express:* node app.js

3️⃣ 捕获未处理异常

生产环境一定要加:

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

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

三、常用排查命令(非常实用)

查看 Node 进程

ps -ef | grep node
top -p <pid>

查看端口占用

lsof -i:3000
netstat -tunlp | grep 3000

实时看日志

tail -f app.log
tail -n 500 app.log | grep ERROR

搜索关键字

grep -R "Error" logs/
grep -i "timeout" app.log

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

✅ 用 PM2 / systemd
✅ 日志统一落盘
✅ 按级别拆分(info / error)
✅ 配合 logrotate 防止日志爆盘
✅ 关键错误上报(Sentry / ELK)


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

  • 你是怎么启动 Node 的(PM2 / systemd / docker / 直接 node)
  • 报错信息或日志片段

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

0 踩