配置Node.js日志轮转可以通过多种方式实现,以下是几种常见的方法:
winston
和 winston-daily-rotate-file
winston
是一个非常流行的Node.js日志库,结合 winston-daily-rotate-file
可以实现日志的每日轮转。
安装依赖:
npm install winston winston-daily-rotate-file
配置 winston
:
创建一个日志配置文件,例如 logger.js
:
const winston = require('winston');
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
})
]
});
module.exports = logger;
使用日志记录器: 在你的应用中使用这个日志记录器:
const logger = require('./logger');
logger.info('This is an info message');
logger.error('This is an error message');
morgan
和 morgan-body-parser
如果你使用的是Express框架,可以结合 morgan
和 morgan-body-parser
来实现日志轮转。
安装依赖:
npm install morgan morgan-body-parser
配置 morgan
:
创建一个中间件来处理日志轮转:
const express = require('express');
const morgan = require('morgan');
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');
const app = express();
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
new DailyRotateFile({
filename: 'access-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
})
]
});
app.use(morgan('combined', { stream: { write: message => logger.info(message.trim()) } }));
app.post('/example', (req, res) => {
res.send('Example endpoint');
});
app.listen(3000, () => {
logger.info('Server is running on port 3000');
});
pm2
的日志管理功能如果你使用 pm2
来管理Node.js应用,可以利用其内置的日志管理功能来实现日志轮转。
启动应用:
pm2 start app.js --name my-app
配置日志轮转:
pm2
默认会自动处理日志轮转,但你可以通过以下命令来配置日志文件的大小和保留天数:
pm2 set pm2:log-date-format "YYYY-MM-DD HH:mm:ss"
pm2 set pm2:max-size "20M"
pm2 set pm2:retain "14d"
通过以上几种方法,你可以根据具体需求选择合适的方式来配置Node.js的日志轮转。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
相关推荐:Node.js日志轮转如何配置