温馨提示×

如何清理JS日志文件

小樊
39
2026-08-17 16:47:42
栏目: 编程语言

在 JavaScript 项目中,“清理日志文件”通常指的是删除、归档或限制日志文件大小和数量,而不是删除代码里的 console.log。下面按常见场景给你一套实用方案。


一、Node.js 后端日志清理

✅ 1. 使用日志库(最推荐)

不要自己写文件,用成熟方案。

常用库

  • winston(最常用)
  • pino
  • bunyan

✅ winston + 日志轮转

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');

优点

  • 自动清理旧日志
  • 不阻塞主线程
  • 生产环境标准做法

二、手动清理日志文件

✅ 1. 删除旧日志(Linux / macOS)

# 删除 7 天前的日志
find logs/ -name "*.log" -mtime +7 -delete

✅ 2. Windows(PowerShell)

Get-ChildItem logs\*.log | Where-Object {
  $_.LastWriteTime -lt (Get-Date).AddDays(-7)
} | Remove-Item

三、定时自动清理(推荐)

✅ Linux crontab

crontab -e
0 2 * * * find /app/logs -name "*.log" -mtime +7 -delete

每天凌晨 2 点清理 7 天前的日志


四、前端 JS 的“日志清理”

✅ 1. 浏览器 console 日志

浏览器没有日志文件,但可以:

console.clear(); // 清空控制台

⚠️ 不建议在生产环境使用 console.log

✅ 推荐:

if (process.env.NODE_ENV === 'production') {
  console.log = () => {};
}

五、Docker / 容器环境

✅ 限制日志大小

# docker-compose
logging:
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "3"

六、数据库 / 业务日志清理

如果是数据库里的日志表

DELETE FROM logs
WHERE created_at < NOW() - INTERVAL 30 DAY;

可配合定时任务(cron / 云函数)。


七、最佳实践总结 ✅

推荐方案

  • Node.js:winston + daily-rotate
  • 定时清理旧文件
  • Docker 限制日志大小
  • 不在生产环境输出大量日志

不推荐

  • 手动 fs.writeFileSync
  • 无限增长的日志文件
  • 在服务器上长期保留 debug 日志

如果你愿意,可以告诉我:

  • ✅ 是 前端还是 Node.js
  • ✅ 日志是 文件 / 控制台 / 数据库
  • ✅ 是否是 Docker / Linux / Windows

我可以给你完全贴合你项目的清理方案

0