溫馨提示×

Node.js日志輪轉如何配置

小樊
79
2025-03-30 02:36:26
欄目: 編程語言

在 Node.js 應用程序中,可以使用第三方庫 winstonwinston-daily-rotate-file 來實現日志輪轉。以下是如何配置這兩個庫的步驟:

  1. 首先,確保已經安裝了 winstonwinston-daily-rotate-file。如果沒有,請使用以下命令安裝:
npm install winston winston-daily-rotate-file
  1. 在你的 Node.js 應用程序中,創建一個名為 logger.js 的文件,并添加以下代碼:
const winston = require('winston');
const { format } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({
  filename: 'logs/application-%DATE%.log',
  datePattern: 'YYYY-MM-DD-HH',
  zippedArchive: true,
  maxSize: '20m',
  maxFiles: '14d'
});

const logger = winston.createLogger({
  level: 'info',
  format: format.combine(
    format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    format.errors({ stack: true }),
    format.splat(),
    format.json()
  ),
  transports: [
    transport
  ]
});

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({
    format: format.combine(
      format.colorize(),
      format.simple()
    )
  }));
}

module.exports = logger;

在這個配置中,我們定義了一個名為 transportDailyRotateFile 實例,它負責處理日志文件的輪轉。以下是一些重要的配置選項:

  • filename: 日志文件的基本名稱。
  • datePattern: 用于生成日志文件名的日期格式。
  • zippedArchive: 是否將舊的日志文件壓縮為 ZIP 文件。
  • maxSize: 單個日志文件的最大大小。
  • maxFiles: 保留的日志文件的最大數量。

我們還定義了一個名為 loggerwinston.Logger 實例,并將 transport 添加到其傳輸器數組中。此外,我們還添加了一個控制臺傳輸器,以便在非生產環境中輸出日志。

  1. 在你的應用程序中使用 logger.js 文件:
const logger = require('./logger');

logger.info('Hello, world!');

現在,當你的應用程序運行時,日志將按照配置的輪轉策略自動輪轉。

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