温馨提示×

nodejs日志linux丢失怎么查

小樊
39
2026-10-17 05:41:24
栏目: 编程语言

在 Linux 上 Node.js 日志“丢失”通常不是真的消失,而是输出位置不对、被重定向、被轮转或进程异常退出。下面按「最常见原因 → 排查命令」给你一套实用清单。


一、先确认:日志到底去哪了?

1️⃣ 看 Node 是怎么启动的

ps -ef | grep node

重点看:

  • 有没有 > log.txt 2>&1 &
  • 是不是用 pm2 / systemd / docker

2️⃣ 检查 stdout / stderr 被重定向

常见“假丢失”:

node app.js > /dev/null 2>&1 &

✅ 解决:改成

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

二、用 PM2(最常见)

查看日志

pm2 logs
pm2 logs appname

日志文件路径

pm2 info appname

里面的:

  • out log path
  • error log path

日志被轮转

PM2 默认可能:

  • 文件被改名
  • 或磁盘写满
ls -lh ~/.pm2/logs

三、systemd 方式(服务部署)

查看日志

journalctl -u your-node-service -f

Node 日志没写文件?

在 service 文件里加:

StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/error.log

四、日志“看起来丢了”的常见真因

✅ 1. 进程崩溃(没 catch)

Node 崩了 → 日志中断

dmesg | grep node

或

journalctl -p err -f

✅ 2. 磁盘满了

df -h

Node 写不进日志会“静默失败”


✅ 3. 日志被 logrotate 切走

ls -lh /var/log/node/
cat /etc/logrotate.d/node

✅ 4. Docker 场景

docker logs container_name

或

docker inspect container_name | grep LogPath

五、推荐的标准做法(避免再丢)

✅ Node 代码里:

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

✅ 用专业日志库:

  • winston
  • pino

✅ 不要只依赖 console.log


六、快速自查清单(复制用)

ps -ef | grep node
pm2 logs
journalctl -u node-service -f
df -h
ls -lh /var/log/node

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

  • ✅ 怎么启动的(pm2 / systemd / docker / 裸 node)
  • ✅ 错误现象(完全没日志 / 中途停 / 文件为空)

我可以直接帮你定位到具体原因。

0 踩