在Linux系统中,日志轮转是一种常见的管理日志文件的方法,它可以防止日志文件过大,同时保留一定时间的日志记录。对于Node.js应用程序,你可以使用一些流行的日志库(如winston、bunyan等)来实现日志轮转。
以下是使用winston库实现日志轮转的方法:
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' })
]
});
winston-daily-rotate-file库:npm install winston-daily-rotate-file
winston-daily-rotate-file:const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const errorLogger = new DailyRotateFile({
filename: 'logs/error-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const combinedLogger = new DailyRotateFile({
filename: 'logs/combined-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
errorLogger,
combinedLogger
]
});
在这个例子中,我们使用了winston-daily-rotate-file库来创建两个新的日志记录器:errorLogger和combinedLogger。这两个记录器都会在每天生成一个新的日志文件,并根据maxSize和maxFiles选项来控制日志文件的大小和保留时间。
现在,你的Node.js应用程序将自动进行日志轮转,每天生成新的日志文件,并在一定时间后删除旧的日志文件。