Node.js 在 CentOS 上的错误日志分析指南
一 日志来源与定位
sudo journalctl -u your-nodejs.service -bsudo journalctl -u your-nodejs.service -fsudo journalctl -u your-nodejs.service --since "2025-12-15 10:00:00" --until "2025-12-15 12:00:00"node app.js > logs/app.log 2>&1 &),使用命令检索与跟踪:
tail -f logs/app.loggrep -i 'error\|exception\|fatal' logs/app.logless -S logs/app.logpm2 logs 查看与过滤;如使用 Winston/Pino/Bunyan 等结构化日志库,日志多为 JSON 格式,便于后续检索与聚合。二 命令行高效排查
grep -io 'error\|exception\|fatal' logs/app.log | sort | uniq -c | sort -nr | headgrep -n "2025-12-15 10:23" logs/app.log 获取行号,再用 sed -n '1000,1050p' logs/app.log 查看片段tail -n 200 logs/app.log | grep -A 20 -B 5 -i 'error'jq 'select(.level=="error") | {time:.timestamp, msg:.message, stack:.stack}' logs/app.logtop/htop、vmstat 1、iostat -x 1 检查 CPU/内存/IO 瓶颈。三 常见错误模式与处理要点
Error: listen EADDRINUSE: address already in use :::3000
ss -ltnp | grep :3000 或 lsof -i :3000 找到 PID 后 kill -9 <PID>;或调整应用端口。Error: Cannot find module 'xxx'
npm install;检查 NODE_PATH 与相对路径。Error: EACCES, permission denied
chown/chmod 或以具备权限的用户运行。Error: EADDRNOTAVAIL
Error: ETIMEDOUT
四 结构化日志与长期治理
logger.info('startup', { port: 3000 }); logger.error('db fail', { err: err.message, stack: err.stack });五 最小可行排错流程
tail -n 200 app.log | grep -i error;若是服务,优先 journalctl -u your-nodejs.service -f。top/htop、vmstat 检查 CPU/内存/IO;确认 Node.js/npm 版本与依赖一致;必要时回滚近期变更。