高效管理node.js應用日志:winston和winston-daily-rotate-file的日志輪轉策略
本文介紹如何使用流行的Node.JS日志庫winston和winston-daily-rotate-file實現日志文件輪轉,有效管理不斷增長的日志文件。
步驟一:安裝必要的庫
首先,請確保已安裝winston和winston-daily-rotate-file。使用npm安裝:
npm install winston winston-daily-rotate-file
步驟二:配置日志輪轉策略 (logger.js)
創建一個名為logger.js的文件,包含以下代碼來配置日志記錄器:
const winston = require('winston'); const { format } = winston; const DailyRotateFile = require('winston-daily-rotate-file'); // 日志格式化 const myFormat = format.combine( format.timestamp({ format: 'yyYY-MM-DD HH:mm:ss' }), format.errors({ stack: true }), format.splat(), format.json() ); // 日志輪轉配置 const transport = new DailyRotateFile({ filename: 'logs/application-%DATE%.log', datePattern: 'YYYY-MM-DD', zippedArchive: true, // 壓縮存檔 maxSize: '20m', // 最大文件大小 maxFiles: '14d' // 保留最大天數 }); // 創建winston日志記錄器實例 const logger = winston.createLogger({ level: 'info', format: myFormat, transports: [transport] }); module.exports = logger;
此配置將日志寫入logs目錄(需手動創建),每天生成一個新的日志文件,文件大小限制為20MB,并保留最多14天的日志。 日志采用JSON格式,包含時間戳和錯誤堆棧信息。
步驟三:在應用中使用日志記錄器
在你的Node.js應用代碼中引入并使用logger實例:
const logger = require('./logger'); logger.info('應用程序啟動成功!'); logger.error('發生錯誤:', new Error('這是一個測試錯誤'));
通過以上步驟,你的Node.js應用將按照配置的策略進行日志輪轉,方便日志管理和問題排查。 記得根據實際需求調整maxSize和maxFiles參數。