在 Debian 上“限制 JS 日志大小”通常分几种场景,下面按最常见情况给你说明:
不要自己写文件,用成熟方案:
npm install winston winston-daily-rotate-file
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxSize: '20m', // 单文件最大 20MB
maxFiles: '14d' // 保留 14 天
});
const logger = winston.createLogger({
transports: [transport]
});
✅ 优点:自动切割、自动清理
如果你用 pm2 启动 JS:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 20M
pm2 set pm2-logrotate:retain 7
编辑配置:
sudo nano /etc/logrotate.d/nodejs
示例:
/var/log/nodejs/*.log {
size 20M
rotate 5
compress
missingok
notifempty
copytruncate
}
测试:
sudo logrotate -d /etc/logrotate.d/nodejs
✅ 适合:直接写文件的 JS 服务
logging:
driver: "json-file"
options:
max-size: "20m"
max-file: "5"
❌ 手动 fs.writeFile 不限制
❌ 只用 console.log 不重定向
| 场景 | 方案 |
|---|---|
| Node 服务 | winston / pm2-logrotate |
| 系统日志 | logrotate |
| Docker | docker logging |
如果你能说下:
我可以直接给你可复制的配置。