在 Node.js 應用程序中,可以使用第三方庫 winston
和 winston-daily-rotate-file
來實現日志輪轉。以下是如何配置這兩個庫的步驟:
winston
和 winston-daily-rotate-file
。如果沒有,請使用以下命令安裝:npm install winston winston-daily-rotate-file
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;
在這個配置中,我們定義了一個名為 transport
的 DailyRotateFile
實例,它負責處理日志文件的輪轉。以下是一些重要的配置選項:
filename
: 日志文件的基本名稱。datePattern
: 用于生成日志文件名的日期格式。zippedArchive
: 是否將舊的日志文件壓縮為 ZIP 文件。maxSize
: 單個日志文件的最大大小。maxFiles
: 保留的日志文件的最大數量。我們還定義了一個名為 logger
的 winston.Logger
實例,并將 transport
添加到其傳輸器數組中。此外,我們還添加了一個控制臺傳輸器,以便在非生產環境中輸出日志。
logger.js
文件:const logger = require('./logger');
logger.info('Hello, world!');
現在,當你的應用程序運行時,日志將按照配置的輪轉策略自動輪轉。