资讯专栏INFORMATION COLUMN

NPM酷库:winston 多路日志记录

荆兆峰 / 3139人阅读

摘要:昨天,我们认识了库的用法,用来控制输出调试日志。今天我们再了解一个日志记录的库,一个多路传输的日志记录库。所谓多路传输,是指,你可以自定义多个日志储存驱动,比如,将日志输出到终端的同时,将重要日志记录到文件中,甚至写到数据库中。

NPM酷库,每天两分钟,了解一个流行NPM库。

昨天,我们认识了debug库的用法,用来控制输出调试日志。但是,debug的特性适合于开发调试,并不适合程序记录运行日志。

今天我们再了解一个日志记录的库:winston,一个多路传输的日志记录库。

所谓多路传输,是指,你可以自定义多个日志储存驱动,比如,将日志输出到终端的同时,将重要日志记录到文件中,甚至写到数据库中。

winston 用法

winston 支持RFC5424标准的日志等级,即debug/info/notice/warning/error等,每一个日志等级都实现为一个函数,你可以直接调用对应的函数,来表明你想要输出日志的重要程度。

const winston = require("winston");
 
winston.log("info", "Hello distributed log files!");
winston.info("Hello again distributed logs");

winston.level = "debug";
winston.log("debug", "Now my debug messages are written to console!");
配置多路日志传输
winston.configure({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: "somefile.log" })
  ]
});

上方代码中就为winston设置了两个日志储存驱动,winston会直接将日志输出到控制台,同时,将日志保存在 somefile.log 文件中。

实例化Logger对象

在前文中,我们使用的是 winston 默认的日志器对象(Logger),默认的Logger方便我们直接访问winston接口,此外,我们还可以实例化一个我们需要的Logger对象:

const logger = new winston.Logger({
  level: "error",
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: "somefile.log" })
  ]
});

在上述代码中,我们实例化了一个新的Logger对象,并且指定了logger实例的日志记录级别为error。当然,你仍然可以调用 logger.info("info text") 来输出info级别的日志,但这些日志会被过滤掉,winston只会讲error级别以上的日志输出到控制台和文件中。那么,我们能不能自定义不同日志存储驱动的级别呢?

为存储驱动定义不同日志级别
const logger = 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/...

RFC 5424: https://tools.ietf.org/html/r...

欢迎关注公众号:梁兴臣

每天了解一个NPM库,一年后成为Node.js高手

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90675.html

相关文章

  • NPM酷库:log4js JavaScript日志框架

    摘要:酷库,每天两分钟,了解一个流行库。今天,我们继续认识另一个日志框架,这个框架和有些类似,也提供了多路日志输出的功能。中称之为,而中称之为输出源。日志分类,可以用来标志不同的程序模块,类似库中的效果,默认分类为。 NPM酷库,每天两分钟,了解一个流行NPM库。 前两天,我们认识了 debug 库 和 winston 库,两款管理程序日志的库,其中debug偏向于适合开发调试,winsto...

    nicercode 评论0 收藏0
  • NPM酷库:debug,控制调试日志

    摘要:今天我们要了解的库是,一个专门用来控制输出调试日志的库。但是,随着项目规模增加,控制台输出的日志就会堆积很多而不可读。库就是一款专门控制日志输出的库,能够完美解决我们的上述需求。 NPM酷库,每天两分钟,了解一个流行NPM库。 今天我们要了解的库是debug,一个专门用来控制输出调试日志的库。 通常,我们直接使用 console.log 输出调试日志,使用console对象直接将日志输...

    funnyZhang 评论0 收藏0
  • NPM酷库:depd 声明弃用功能

    摘要:有没有优雅的方式呢今天我们了解的库就是专门来控制输出弃用功能警告日志的。声明弃用函数使用包裹一层我们要废弃的函数,那么这个函数在被第一次调用时,就会自动输出警告信息。声明弃用属性使用声明对象指定的属性被弃用。 NPM酷库,每天两分钟,了解一个流行NPM库。 Node.js 高效率编程的基础是大量的NPM开源库,开发应用时,找特定领域的NPM库要比自己从头写代码要高效得多。如果某个领域没...

    paulquei 评论0 收藏0
  • node错误处理与日志

    摘要:并不自带,需要引入库运行日志文件,此时在目录下就生成了今天的日志欢迎访问我的博客 node项目中的错误处理 node中Error对象的使用 使用captureStackTrace方法加入自带的错误信息 // Error对象自带的属性 Error.captureStackTrace // 如何使用captureStackTrace var obj = { message: so...

    GT 评论0 收藏0
  • 4.2 数据库表/Sequelize Mysql-博客后端Api-NodeJs+Express+My

    功能梳理完了以后,咱们就可以开始数据库表设计了: 数据库表图: showImg(https://segmentfault.com/img/bVbr9GC?w=1922&h=1140); 首先打开Navicat Premium 创建数据库 blog 配置如下: showImg(https://segmentfault.com/img/bVbr81Y?w=720&h=352); 课前学习:1、Sequ...

    nicercode 评论0 收藏0

发表评论

0条评论

荆兆峰

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<