溫馨提示×

如何清理Node.js舊日志

小樊
68
2025-03-06 09:13:24
欄目: 編程語言

在Node.js中清理舊日志文件可以通過幾種不同的方法實現,以下是一些常見的方法:

使用Node.js內置的fs模塊

你可以使用Node.js的fs模塊來刪除舊的日志文件。例如,以下是一個簡單的腳本,它會刪除指定目錄下所有超過一定時間的日志文件:

const fs = require('fs');
const path = require('path');

const logDirectory = './logs'; // 日志文件所在目錄
const maxLogFiles = 5; // 保留的最新日志文件數量

// 獲取目錄下所有.log文件
const logFiles = fs.readdirSync(logDirectory).filter(file => file.endsWith('.log'));

// 按修改時間排序
const logFilesSorted = logFiles.sort((a, b) => {
  return fs.statSync(path.join(logDirectory, b)).mtime - fs.statSync(path.join(logDirectory, a)).mtime;
});

// 刪除超過最大數量的舊日志文件
if (logFilesSorted.length > maxLogFiles) {
  const filesToDelete = logFilesSorted.slice(0, logFilesSorted.length - maxLogFiles);
  filesToDelete.forEach(file => {
    const filePath = path.join(logDirectory, file);
    fs.unlinkSync(filePath);
  });
}

使用定時任務

你可以設置一個定時任務(例如使用setInterval)來定期執行日志清理任務。例如,以下腳本每天執行一次,刪除一周前的日志文件:

const cleanupInterval = setInterval(() => {
  const logDirectory = './logs';
  const maxAge = 7 * 24 * 60 * 60 * 1000; // 一周的時間

  const logFiles = fs.readdirSync(logDirectory).filter(file => file.endsWith('.log'));
  logFiles.forEach(file => {
    const filePath = path.join(logDirectory, file);
    const fileAge = Date.now() - fs.statSync(filePath).mtime;
    if (fileAge > maxAge) {
      fs.unlinkSync(filePath);
    }
  });
}, 24 * 60 * 60 * 1000); // 每天執行一次

// 在程序退出時取消定時器
process.on('exit', () => {
  clearInterval(cleanupInterval);
});

使用日志庫的內置功能

一些日志庫提供了內置的日志輪換和清理功能。例如,winston庫可以與winston-daily-rotate-file插件一起使用,實現日志文件的自動輪換和清理。

const winston = require('winston');
const dailyRotateFile = require('winston-daily-rotate-file');

const logger = winston.createLogger({
  transport: dailyRotateFile({
    filename: './logs/combined.log',
    datePattern: 'YYYY-MM-DD',
    zippedArchive: true,
    maxsize: '10m',
    compress: true,
  }),
  level: 'info',
});

// 使用logger記錄日志...

使用系統日志服務

對于更復雜的日志管理需求,你可以考慮使用專門的系統日志服務,如ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog,這些服務可以幫助你集中管理、分析和清理日志。

選擇適合你應用場景的方法來清理Node.js舊日志,可以有效地管理磁盤空間,并保持日志文件的整潔。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女