溫馨提示×

Linux Node.js日志輪轉方法

小樊
77
2025-02-24 14:08:27
欄目: 編程語言

在Linux系統中,日志輪轉是一種管理日志文件大小和數量的方法,以防止日志文件過大占用過多磁盤空間。以下是在Linux系統中使用Node.js進行日志輪轉的方法:

使用Node.js的fs模塊手動實現日志輪轉

Node.js的fs模塊提供了豐富的文件操作API,可以手動實現文件輪轉。以下是一個簡單的示例:

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

const logFilePath = path.join(__dirname, 'app.log');
const maxFileSize = 1024 * 1024; // 1MB

function rotateLogFile() {
  const stats = fs.statSync(logFilePath);
  if (stats.size >= maxFileSize) {
    const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
    const newFilePath = `${logFilePath}.${timestamp}`;
    fs.renameSync(logFilePath, newFilePath);
  }
}

function appendLog(message) {
  rotateLogFile();
  fs.appendFileSync(logFilePath, message + '\n');
}

// 示例使用
appendLog('這是一條日志信息');

使用第三方庫winstonwinston-daily-rotate-file實現日志輪轉

winston是一個強大的日志庫,結合winston-daily-rotate-file插件,可以輕松實現按天或按文件大小進行日志輪轉。以下是一個示例配置:

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

const logger = winston.createLogger({
  transports: [
    new DailyRotateFile({
      filename: 'app-%DATE%.log',
      datePattern: 'YYYY-MM-DD',
      zippedArchive: true,
      maxSize: '1m',
      maxFiles: '14d'
    })
  ]
});

logger.info('這是一條日志信息');

使用Linux系統日志管理工具logrotate

logrotate是一個Linux系統日志的管理工具,可以對單個日志文件或者某個目錄下的文件按時間/大小進行切割、壓縮操作,并指定日志保存數量。以下是一個簡單的logrotate配置示例:

  1. 編輯logrotate配置文件

    sudo nano /etc/logrotate.d/myapp
    
  2. 添加配置

    /var/log/myapp/*.log {
      daily
      rotate 30
      compress
      delaycompress
      missingok
      notifempty
      create 640 root adm
      dateext
      dateformat -%Y-%m-%d-%s
    }
    

    這個配置意味著myapp的日志文件每天輪轉一次,保留最近30天的日志文件,并壓縮舊的日志文件。

  3. 測試配置

    sudo logrotate -d /etc/logrotate.d/myapp
    
  4. 強制輪轉日志文件

    sudo logrotate -f /etc/logrotate.d/myapp
    
  5. 重啟服務

    如果你修改了服務器的啟動腳本或配置文件以使用logrotate,你可能需要重啟相關服務以確保新的配置生效。例如,對于Apache服務器:

    sudo systemctl restart apache2
    

通過以上方法,你可以在Linux系統中使用Node.js實現日志輪轉,確保日志文件的管理既高效又安全。

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