在 Node.js 應用程序中,可以使用第三方庫 winston
或 morgan
配置日志輪轉。這里以 winston
為例,介紹如何配置日志輪轉。
首先,確保已經安裝了 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', // 日志輪轉日期格式
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() // 日志格式為 JSON
),
transports: [
transport
]
});
module.exports = logger;
現在,可以在應用程序中使用 logger.js
文件中導出的 logger
對象記錄日志:
const logger = require('./logger');
logger.info('Hello, world!');
logger.error('An error occurred');
這樣配置后,日志文件將每天輪轉一次,并保留最近 14 天的日志文件。每個日志文件的最大尺寸為 20MB。當文件達到最大尺寸時,將自動創建一個新的日志文件。