Node.js日志分割與歸檔方法

Node.js日志分割與歸檔方法

在Node.JS應用中,通常通過第三方模塊或自定義邏輯來完成日志的切分與存檔。以下是一些常用的實現方式:

  1. 利用winston-daily-rotate-file模塊:

該模塊是基于winston封裝的日志切割組件,支持按天進行日志文件輪換。首先需要安裝該模塊:

npm install winston-daily-rotate-file

接著,在項目代碼中引入并配置使用:

const winston = require('winston'); const DailyRotateFile = require('winston-daily-rotate-file');  const transport = new DailyRotateFile({   filename: 'application-%DATE%.log',   datePattern: 'yyYY-MM-DD-HH',   zippedArchive: true,   maxSize: '20m',   maxFiles: '14d' });  const logger = winston.createLogger({   level: 'info',   format: winston.format.json(),   transports: [     transport   ] });  logger.info('Hello, world!');

以上配置將根據日期生成日志文件,單個文件最大容量為20MB,保留最近14天內的日志,并對歷史文件進行壓縮處理。

  1. 使用pino模塊組合方案:

pino是一款高性能日志記錄器,結合其他插件可輕松實現日志文件管理。先執行安裝命令:

npm install pino pino-pretty pino-daily-rotate-file

隨后在代碼中進行如下初始化配置:

const pino = require('pino'); const pinoPretty = require('pino-pretty'); const pinoDailyRotateFile = require('pino-daily-rotate-file');  const logger = pino({   level: 'info' }, pinoDailyRotateFile({   period: '1d',   dir: 'logs',   prefix: 'application' }));  logger.info('Hello, world!');  // 如需美化控制臺輸出格式,可配合使用 pino-pretty pinoPretty({ colorize: true }).pipe(process.stdout);

此示例將日志按天進行拆分,統一存放至logs目錄下,文件名以application開頭。

通過上述方案,可以靈活地實現Node.js項目的日志管理功能,具體參數可根據實際業務需求進行調整。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享