在Node.JS應用中,通常通過第三方模塊或自定義邏輯來完成日志的切分與存檔。以下是一些常用的實現方式:
- 利用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天內的日志,并對歷史文件進行壓縮處理。
- 使用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