Node.js 服务日志占满磁盘,通常不是 Node.js 本身的问题,而是日志产生方式 + 运维策略缺失共同导致的。下面按「常见原因 → 原理 → 解决建议」来说明。
这是头号原因。
app.log)✅ 表现:
✅ 解决:
logrotatewinston + winston-daily-rotate-filepm2 logrotate例如:
node app.js > app.log 2>&1
或 Docker:
docker logs -f > app.log
✅ 问题:
✅ 解决:
console.log例如:
setInterval(() => {
try {
doSomething()
} catch (e) {
console.error(e)
}
}, 10)
✅ 结果:
✅ 解决:
开发时:
logger.debug('req =>', req)
生产环境:
✅ 解决:
info+Docker 默认:
json-file 驱动
不限制大小
✅ 结果:
/var/lib/docker 被撑爆✅ 解决(docker-compose):
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
例如:
✅ 解决:
console.log 是同步阻塞的✅ 建议:
pino / winstonprocess.on('uncaughtException', e => {
console.log(e)
})
✅ 风险:
# 看谁占磁盘
du -sh /* 2>/dev/null
# 看日志文件
ls -lh /var/log
du -sh /var/log/*
# Docker
docker system df
Node.js 日志占满磁盘,99% 是因为**“只写不切 + 不限制 + 错误狂打”**。
如果你愿意,可以:
我可以直接帮你给出可落地的配置方案。