看懂 Node.js 在 Linux 上的日志,核心不是“看文件”,而是先搞清楚日志从哪来、是什么格式、代表什么含义,再结合系统工具去定位问题。下面按实用顺序讲。
最常见来源:
console.log / console.error常见位置:
/var/log/your-app/
~/logs/
项目目录下的 logs/
如果是 PM2 启动:
pm2 logs
pm2 logs app-name
journalctl -u your-app.service
journalctl -u your-app.service -f # 实时
docker logs -f container_name
dmesg | grep -i "out of memory"
journalctl | grep -i kill
node:internal/process/uncaughtException
示例:
[2024-01-12 10:23:01] INFO user login success uid=123
看:
典型 Node 错误:
Error: connect ECONNREFUSED 127.0.0.1:6379
at TCPConnectWrap.afterConnect
重点看:
uncaughtException
unhandledRejection
说明:
tail -f app.log
tail -n 200 app.log
grep -i error app.log
grep -C 5 "ECONNREFUSED" app.log
sed -n '/10:00/,/10:30/p' app.log
top
htop
free -h
现象:接口变慢 / 服务挂了
ps aux | grep node
pm2 logs
# 或
tail -f /var/log/app/error.log
grep -i "error\|timeout\|refused" app.log
top
df -h
dmesg | tail
{"level":"error","time":"...","msg":"db failed","err":"..."}
工具:pino(最快)、winston
process.on('uncaughtException', ...)
process.on('unhandledRejection', ...)
看懂 Node.js Linux 日志 = 知道日志来源 + 会用 tail/grep/journalctl + 能从 ERROR / 堆栈 / OOM 定位问题
如果你愿意,可以:
我可以直接帮你“逐行翻译”。