当前位置: 首页 > 后端技术 > Node.js

NPM酷库:winston多渠道日志

时间:2023-04-03 10:59:51 Node.js

NPM酷库,每天两分钟,了解一个流行的NPM库。昨天学习了debug库的用法,用于控制debug日志的输出。但是debug特性适合开发调试,不适合程序记录运行日志。今天我们学习另一个日志库:winston,一个多路复用的日志库。所谓多路复用,就是可以自定义多个日志存储驱动,比如在向终端输出日志的同时,将重要的日志记录到文件中,甚至写入数据库。winston的使用winston支持RFC5424标准的日志级别,即debug/info/notice/warning/error等,每个日志级别都实现为一个函数,可以直接调用相应的函数来表示要输出的日志的重要性.constwinston=require('winston');winston.log('info','Hellodistributedlogfiles!');winston.info('Helloagaindistributedlogs');winston.level='debug';winston.log('debug','Nowmydebugmessages写给控制台!');配置多通道日志传输winston.configure({transports:[new(winston.transports.Console)(),new(winston.transports.File)({filename:'somefile.log'})]});上面代码中为winston设置了两个日志存储驱动,winston会直接将日志输出到控制台,同时将日志保存在文件somefile.log中。实例化Logger对象在上一篇文章中,我们使用了winston默认的记录器对象(Logger)。默认的Logger方便我们直接访问winston接口。另外,我们还可以实例化一个我们需要的Logger对象:constlogger=newwinston.Logger({level:'error',transports:[new(winston.transports.Console)(),new(winston.transports.File)({文件名:'somefile.log'})]});在上面的代码中,我们实例化了一个新的Logger对象,并指定了logger实例的日志级别为error。当然,你仍然可以调用logger.info('infotext')来输出info级别的日志,但是这些日志会被过滤掉,winston只会将error级别以上的日志输出到控制台和文件中。那么,是否可以自定义不同日志存储驱动的级别呢?为存储驱动定义不同的日志级别constlogger=new(winston.Logger)({transports:[new(winston.transports.File)({name:'info-file',filename:'filelog-info.log',level:'info'}),new(winston.transports.File)({name:'error-file',filename:'filelog-error.log',level:'error'})]});在上面的代码中,我们同时将日志输出到两个文件中,其中一个只用于保存error级别以上的错误日志,另一个用于保存info级别以上的详细日志信息。其他用法winston提供了非常强大的功能来适应不同的日志记录场景。NPM炫酷库文章的目的只是让你知道在某个应用领域有哪些库可以大致解决某些问题。在以后的工作中,你可以快速的从脑海中检索出相关的库,而不必去仔细研究每一个库的每一个用法。因此,限于篇幅,winston其他方面的使用方法不再赘述。如果你当前的工作恰好需要winston这样的库,可以深入研究winston等参考资料。参考winston:https://github.com/winstonjs/...RFC5424:https://tools.ietf.org/html/r...欢迎关注公众号:梁星辰每学一个npm库天。一年后成为Node.js高手