温馨提示×

linux下nodejs日志咋定位

小樊
36
2026-09-02 13:01:32
栏目: 编程语言

在 Linux 下定位 Node.js 日志,通常分几种情况:应用自身日志、运行崩溃日志、系统/进程日志、容器日志。下面按实战场景给你梳理一下。


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

1. 控制台输出(最常见)

如果你是直接运行的:

node app.js

日志一般在终端输出

如果是后台运行:

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

那日志就在:

tail -f app.log

2. 使用日志库(winston / pino / log4js)

一般会在配置里指定路径,例如:

/var/log/node/app.log
./logs/app.log

确认方式:

grep -R "logs" config/

二、用 PM2 管理的 Node.js(非常常见)

查看日志

pm2 logs
pm2 logs appname

实时追踪

pm2 logs --lines 100

日志文件路径

~/.pm2/logs/

三、系统级日志(崩溃 / 被杀)

1. 系统日志(推荐先看)

journalctl -u your-node-service

journalctl -xe

2. 被 OOM 杀掉(内存爆了)

dmesg | grep -i "killed process"

grep -i "out of memory" /var/log/messages

四、服务方式运行(systemd)

如果你用 systemd:

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

五、Docker 容器里的 Node.js

docker logs container_name
docker logs -f container_name

如果日志在容器里:

docker exec -it container_name sh
cat /app/logs/app.log

六、快速定位“错误在哪”

按关键字搜

grep -R "Error" /var/log/node/

看最近修改的日志

ls -lt /var/log/ | head

追踪实时错误

tail -f app.log | grep -i error

七、常见坑提醒

  • console.log 在 production 会被缓冲,可能看不到
  • 日志没写磁盘 = 配置错了路径
  • PM2 日志默认会轮转(可能找不到老日志)

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

  • 你是 裸 node / PM2 / Docker / systemd
  • 启动失败 / 运行中报错 / 没日志

我可以直接帮你给命令。

0