在Node.js中,可以使用winston
库来实现日志轮转。winston
是一个流行的日志库,它提供了多种传输方式(如文件、控制台等)和日志轮转功能。要配置日志轮转策略,你需要安装winston
库以及它的winston-daily-rotate-file
模块。
首先,使用npm安装这两个库:
npm install winston winston-daily-rotate-file
然后,在你的Node.js应用中,按照以下示例配置winston
和日志轮转策略:
const winston = require('winston'); const { DailyRotateFile } = require('winston-daily-rotate-file'); const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new DailyRotateFile({ filename: 'logs/application-%DATE%.log', // 日志文件名格式 datePattern: 'YYYY-MM-DD', // 日期格式 zippedArchive: true, // 是否压缩旧日志文件 maxSize: '20m', // 单个日志文件最大尺寸 maxFiles: '14d' // 保留日志文件的天数 }) ] }); // 使用logger记录日志 logger.info('Hello, world!');
在这个示例中,我们配置了以下日志轮转策略:
- 日志文件名格式:
logs/application-%DATE%.log
- 日期格式:
YYYY-MM-DD
- 是否压缩旧日志文件:
zippedArchive: true
- 单个日志文件最大尺寸:
maxSize: '20m'
- 保留日志文件的天数:
maxFiles: '14d'
这样配置后,每天都会生成一个新的日志文件,文件名包含日期。当单个日志文件达到20MB时,它会被压缩并创建一个新的日志文件。同时,保留最近14天的日志文件。