介绍
winston-daily-rotate-file 是一个 Node.js 的日志库,通过这个包可以很方便地实现日志文件的按照日期自动分割,支持 gzip 压缩,同时也支持多个应用程序的日志写入同一个目录下。本文将介绍如何使用该包来记录前端类 Node 项目的日志信息。
安装
使用 npm 命令安装 winston-daily-rotate-file:
npm install winston-daily-rotate-file --save
然后在项目中引入:
const winston = require('winston'); const DailyRotateFile = require('winston-daily-rotate-file');
用法
在使用 winston-daily-rotate-file 前,需要先设置 winston 的默认传输器为 Console,以便在开发过程中可以通过控制台输出当前程序的日志信息,这样便于调试。通过下面这段代码可以实现:
const logger = winston.createLogger({ format: winston.format.combine( winston.format.colorize(), winston.format.simple() ), transports: [new winston.transports.Console()] });
接下来,设置 winston-daily-rotate-file 传输器,这里将日志文件存放到 logs 目录下,文件名格式为 YYYY-MM-DD.log.gz,其中,YYYY、MM 和 DD 表示年、月和日,打包文件使用 gzip 压缩:
const transport = new DailyRotateFile({ filename: './logs/%DATE%.log.gz', datePattern: 'YYYY-MM-DD' }); logger.add(transport);
此外,还可以设置日志文件的最大大小和最大文件数量,这样当日志文件的大小超过指定的大小或者日志文件数量超过指定的数量时,就会自动删除早期的日志:
const transport = new DailyRotateFile({ filename: './logs/%DATE%.log.gz', datePattern: 'YYYY-MM-DD', maxSize: '20m', maxFiles: '14d' }); logger.add(transport);
在实际应用中,日志级别通常会按照 DEBUG、INFO、WARN、ERROR 和 FATAL 从低到高进行分类,而 winston-daily-rotate-file 也可以使用这些级别来记录日志:
logger.debug('debug message'); logger.info('info message'); logger.warn('warn message'); logger.error('error message'); logger.fatal('fatal message');
值得注意的是,日志级别可以在每个传输器中单独设定,这可以用来避免写入过多不必要的日志内容。以下是对日志级别进行设置的示例代码:
const transport = new DailyRotateFile({ filename: './logs/%DATE%.log.gz', datePattern: 'YYYY-MM-DD', maxSize: '20m', maxFiles: '14d', level: 'debug' }); logger.add(transport);
总结
本文介绍了如何使用 npm 包 winston-daily-rotate-file 在 Node.js 项目中实现日志自动分割,并利用日志级别实现过滤不必要信息。通过本文的介绍,读者可以掌握 winston-daily-rotate-file 的基本用法,方便于日后在前端类 Node 项目开发中使用该工具进行日志记录的实现。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66058