Node.js 日志突然增大,通常不是“Node 本身”的问题,而是业务、依赖或运维配置导致的。下面按常见原因 → 排查方式 → 解决办法给你一个系统性的排查清单。
典型表现
Error、Exception、stack trace常见原因
✅ 排查:
# 看日志里最常见的错误
tail -n 100000 app.log | grep -i error | sort | uniq -c | sort -nr | head
✅ 解决:
uncaughtException、unhandledRejection 加日志兜底JSON.stringify(err)典型表现
debug、trace常见原因
✅ 排查:
grep -i 'debug\|trace' app.log | wc -l
✅ 解决:
LOG_LEVEL=info
或:
logger.level = 'info';
典型表现
常见原因
morgan、winston、pino 全量记录/health)✅ 解决示例(morgan):
app.use(morgan('combined', {
skip: (req) => req.url === '/health'
}));
典型表现
常见原因
setInterval✅ 排查:
ps -ef | grep node
✅ 解决:
典型表现
常见原因
winston-daily-rotate-file✅ 解决: winston
new DailyRotateFile({
filename: 'app-%DATE%.log',
maxSize: '20m',
maxFiles: '14d'
})
PM2
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
典型表现
node_modules常见库
✅ 解决:
mongoose.set('debug', false);
# 1. 看日志增长速度
watch -n 1 "ls -lh app.log"
# 2. 看日志里最多的内容
awk '{print $4}' app.log | sort | uniq -c | sort -nr | head
# 3. 看哪些请求最频繁
grep '"GET\|POST' app.log | awk '{print $7}' | sort | uniq -c | sort -nr
info 起/health、/metrics你可以贴出:
我可以直接帮你判断 是哪一种原因 + 给出最小改动方案。