“JS 日志写满 Debian”通常是指 Node.js(或前端构建/服务端 JS 程序)产生的日志文件不断增大,最终占满 Debian 服务器的磁盘空间。这不是 Debian 本身的问题,而是日志管理不当或程序行为异常导致的。
下面从 常见原因 → 排查方法 → 解决/预防方案 来说明。
例如:
fs.appendFileSync('app.log', log)
如果:
→ 日志会无限增长
例如:
node app.js > app.log 2>&1
Debian 不会自动切割 app.log
PM2 默认日志在:
~/.pm2/logs/
如果不装 pm2-logrotate,日志会一直增长
例如:
setInterval(() => {
console.log('error', err)
}, 0)
或异常被 catch 后继续抛
docker logs container > file
或 stdout 没限制
df -h
du -h /var /home /root 2>/dev/null | sort -rh | head
find / -name "*.log" -size +100M
lsof | grep deleted
(常见于“删了但进程还在写”的日志)
示例 /etc/logrotate.d/node-app:
/var/log/node/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
不要直接 console.log
推荐:
winstonpinobunyan示例(pino):
import pino from 'pino'
const logger = pino({ level: 'info' })
logger.info('hello')
限制日志大小:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
# 不要 rm,先清空
: > app.log
JS 日志写满 Debian,本质是没有日志轮转 + 程序日志失控。
如果你愿意,可以告诉我:
我可以给你 针对性的配置示例。