要设置Node.js日志的保留期限,您可以使用一些流行的日志库,例如winston或morgan。这里以winston为例,展示如何设置日志保留期限。
首先,确保您已经安装了winston:
npm install winston
接下来,创建一个名为logger.js的文件,并添加以下代码:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' })
]
});
// 设置日志保留期限
const logRotation = require('winston-daily-rotate-file');
logger.add(new logRotation({
filename: 'logs/error-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
}));
logger.add(new logRotation({
filename: 'logs/combined-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
}));
module.exports = logger;
在这个例子中,我们使用了winston-daily-rotate-file库来设置日志保留期限。首先,您需要安装它:
npm install winston-daily-rotate-file
然后,我们在logger.js文件中引入winston-daily-rotate-file,并为每个日志文件创建一个新的logRotation实例。在这个例子中,我们设置了以下选项:
filename: 日志文件的名称,其中%DATE%将被替换为当前日期。datePattern: 日期模式,用于生成按日期分割的日志文件。zippedArchive: 是否将旧的日志文件压缩为ZIP文件。maxSize: 单个日志文件的最大大小。当文件大小超过此值时,将创建一个新的日志文件。maxFiles: 保留的日志文件数量。当超过此数量的日志文件时,将删除最旧的日志文件。在这个例子中,我们设置了每个日志文件的最大大小为20MB,保留最近14天的日志文件。您可以根据需要调整这些设置。
最后,在您的应用程序中使用logger.js文件:
const logger = require('./logger');
logger.info('Hello, world!');
现在,您的Node.js应用程序将按照指定的保留期限自动管理日志文件。