在 Linux 环境下,JS 日志过大(如 Node.js 服务日志、前端构建日志、PM2 日志等)是常见问题。可以从排查原因 → 清理方式 → 长期治理三个层面处理。
du -sh /var/log/*
du -sh ~/logs/*
find / -name "*.log" -size +100M
常见 JS 日志位置:
logs/、/var/log/~/.pm2/logs/docker logs/var/log/nginx/> app.log
# 或
: > app.log
⚠️ 不要直接
rm,可能导致进程仍占用磁盘空间
pm2 flush
# 查看
docker ps --size
# 清理
truncate -s 0 /var/lib/docker/containers/*/*-json.log
vim /etc/logrotate.d/nodejs
示例:
/var/log/nodejs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
应用:
logrotate -f /etc/logrotate.d/nodejs
不要 console.log 写文件
推荐:
winstonpinobunyan示例(winston):
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({
filename: 'app.log',
maxsize: 10 * 1024 * 1024, // 10MB
maxFiles: 5,
tailable: true
})
]
});
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
/etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
重启 Docker:
systemctl restart docker
| 原因 | 解决 |
|---|---|
| 异常循环打印错误 | 修复异常 |
| 生产环境 debug 日志 | 调整日志级别 |
| 第三方库疯狂输出 | 屏蔽或重定向 |
| 请求体 / 大对象打印 | 不打印 payload |
如果你能告诉我:
我可以直接给你可复制的配置方案。