Node.js日志分割与归档方法

Node.js日志分割与归档方法

在Node.JS应用中,通常通过第三方模块或自定义逻辑来完成日志的切分与存档。以下是一些常用的实现方式:

  1. 利用winston-daily-rotate-file模块:

该模块是基于winston封装的日志切割组件,支持按天进行日志文件轮换。首先需要安装该模块:

npm install winston-daily-rotate-file

接着,在项目代码中引入并配置使用:

const winston = require('winston'); const DailyRotateFile = require('winston-daily-rotate-file');  const transport = new DailyRotateFile({   filename: 'application-%DATE%.log',   datePattern: 'yyYY-MM-DD-HH',   zippedArchive: true,   maxSize: '20m',   maxFiles: '14d' });  const logger = winston.createLogger({   level: 'info',   format: winston.format.json(),   transports: [     transport   ] });  logger.info('Hello, world!');

以上配置将根据日期生成日志文件,单个文件最大容量为20MB,保留最近14天内的日志,并对历史文件进行压缩处理。

  1. 使用pino模块组合方案:

pino是一款高性能日志记录器,结合其他插件可轻松实现日志文件管理。先执行安装命令:

npm install pino pino-pretty pino-daily-rotate-file

随后在代码中进行如下初始化配置:

const pino = require('pino'); const pinoPretty = require('pino-pretty'); const pinoDailyRotateFile = require('pino-daily-rotate-file');  const logger = pino({   level: 'info' }, pinoDailyRotateFile({   period: '1d',   dir: 'logs',   prefix: 'application' }));  logger.info('Hello, world!');  // 如需美化控制台输出格式,可配合使用 pino-pretty pinoPretty({ colorize: true }).pipe(process.stdout);

此示例将日志按天进行拆分,统一存放至logs目录下,文件名以application开头。

通过上述方案,可以灵活地实现Node.js项目的日志管理功能,具体参数可根据实际业务需求进行调整。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享