在 Linux 上定位 Node.js 日志问题,通常可以按下面几个层次来做:先看进程状态 → 再找日志来源 → 分析日志内容 → 必要时加诊断手段。
ps -ef | grep node
# 或
pgrep -af node
如果是用 PM2 / Docker / systemd 启动的:
pm2 list
docker ps
systemctl status your-node-service
常见位置:
/var/log/your-app/
./logs/
~/logs/
看代码里是否用了:
console.logwinstonpinolog4jspm2 logs
pm2 logs app-name
# 日志文件
~/.pm2/logs/
journalctl -u your-node-service -f
journalctl -u your-node-service --since "10 min ago"
docker logs -f container_id
docker logs --tail 200 container_id
/var/log/nginx/access.log
/var/log/nginx/error.log
tail -f app.log
tail -n 500 app.log | less
grep -i error app.log
grep -i "uncaught" app.log
按时间过滤:
sed -n '/2026-01-21 10:00/,/2026-01-21 10:30/p' app.log
检查:
process.on('uncaughtException', e => {
console.error('uncaught', e);
});
process.on('unhandledRejection', e => {
console.error('unhandledRejection', e);
});
top -p $(pgrep node)
# 或
htop
Node 内部:
node --inspect
配合 Chrome DevTools 看 CPU / 内存。
DEBUG=* node app.js
按级别过滤:
grep -E "ERROR|WARN" app.log
结构化日志(pino / winston json):
jq 'select(.level=="error")' app.log
日志轮转示例(logrotate):
/var/log/node-app/*.log {
daily
rotate 14
compress
missingok
notifempty
}
df -h
如果你愿意,可以告诉我:
我可以直接帮你给一套针对性的排查命令。