在 Linux 下定位 Node.js 日志,通常可以按下面几个层次来做:进程日志在哪里 → 运行时报错怎么看 → 如何排查问题。
最常见,取决于你用的日志方案:
console.log / console.errorwinstonpinolog4jsbunyan常见位置:
/var/log/xxx/
/opt/xxx/logs/
~/project/logs/
查看:
ls -lh /var/log/your-app/
tail -f /var/log/your-app/app.log
PM2 自带日志管理:
pm2 logs
pm2 logs app-name
pm2 logs --lines 100
日志文件路径:
~/.pm2/logs/
如果你是用 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
docker logs container_name
docker logs -f container_name
docker logs --tail 200 container_name
Node 报错通常会包含:
at Function.Module._resolveFilename
at /app/server.js:23:10
重点看:
DEBUG=* node app.js
NODE_ENV=development node app.js
如果是 Express:
DEBUG=express:* node app.js
生产环境一定要加:
process.on('uncaughtException', (err) => {
console.error('uncaughtException', err);
});
process.on('unhandledRejection', (reason) => {
console.error('unhandledRejection', reason);
});
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)
如果你愿意,可以告诉我:
我可以直接帮你精准定位问题。