配置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的日志轮转。
以上就是关于“如何配置Node.js日志轮转”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm