在 JavaScript 项目中,“清理日志文件”通常指的是删除、归档或限制日志文件大小和数量,而不是删除代码里的 console.log。下面按常见场景给你一套实用方案。
不要自己写文件,用成熟方案。
npm install winston winston-daily-rotate-file
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
dirname: 'logs',
filename: 'app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxSize: '20m', // 单个文件最大
maxFiles: '14d', // 保留 14 天
zippedArchive: true // 自动压缩
});
const logger = winston.createLogger({
level: 'info',
transports: [transport]
});
logger.info('Hello log');
✅ 优点
# 删除 7 天前的日志
find logs/ -name "*.log" -mtime +7 -delete
Get-ChildItem logs\*.log | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddDays(-7)
} | Remove-Item
crontab -e
0 2 * * * find /app/logs -name "*.log" -mtime +7 -delete
每天凌晨 2 点清理 7 天前的日志
浏览器没有日志文件,但可以:
console.clear(); // 清空控制台
⚠️ 不建议在生产环境使用 console.log
✅ 推荐:
if (process.env.NODE_ENV === 'production') {
console.log = () => {};
}
# docker-compose
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
如果是数据库里的日志表:
DELETE FROM logs
WHERE created_at < NOW() - INTERVAL 30 DAY;
可配合定时任务(cron / 云函数)。
✅ 推荐方案
❌ 不推荐
fs.writeFileSync如果你愿意,可以告诉我:
我可以给你完全贴合你项目的清理方案。