摘要:今天我们要了解的库是,一个专门用来控制输出调试日志的库。但是,随着项目规模增加,控制台输出的日志就会堆积很多而不可读。库就是一款专门控制日志输出的库,能够完美解决我们的上述需求。
NPM酷库,每天两分钟,了解一个流行NPM库。
今天我们要了解的库是debug,一个专门用来控制输出调试日志的库。
通常,我们直接使用 console.log 输出调试日志,使用console对象直接将日志输出到控制台,由于Node.js和浏览器环境都默认支持console对象,所以,这种方式是最直接和最简洁的。
但是,随着项目规模增加,console 控制台输出的日志就会堆积很多而不可读。另一方面,我们需要在开发调试环境才打开日志,而线上生产环境就不需要输出过多的日志。使用 console 对象控制日志输出,我们会自然而然地以“加注释”、“去注释”的方式来控制日志的输出。这样很笨。
debug库就是一款专门控制日志输出的库,能够完美解决我们的上述需求。
首先,debug库会判断DEBUG环境变量,所以我们不需要修改代码,只调整一下程序运行环境就可以控制日志是否输出。另外,debug库不是简单地布尔判断DEBUG环境变量,而是会对DEBUG环境变量进行解析,允许我们选择性地控制输出哪些模块的日志,有效地解决了调试程序时候控制台日志堆积问题,因为我们可以控制debug,让其只输出我们关心的程序模块的日志。
下面就是一段使用了debug库的程序示例。
const Debugger = require("debug"); const a = Debugger("worker:a"); const b = Debugger("worker:b"); function work() { a("doing lots of uninteresting work"); setTimeout(work, Math.random() * 1000); } work(); function workb() { b("doing some work"); setTimeout(workb, Math.random() * 2000); } workb();
如果设置环境变量DEBUG为 worker:* 那么就会输出所有的日志:
如果设置环境变量DEBUG为 worker:a 那么就只会输出worker:a 的日志:
从上述例子中,得知DEBUG环境变量的设置支持通配符*。假设,我们的程序中存在如下调试器 "connect:bodyParser"、"connect:compress"、"connect:session",我们可以将DEBUG设置为DEBUG=connect:bodyParser,connect:compress,connect:session ,或者简单地使用通配符 DEBUG=connect:*,如果我们需要调试非connect相关的其他信息,可以使用 - 符号,“减去” connect,DEBUG=*,-connect:* 。
在浏览器端,debug也能够很好地运行,不过在浏览器端开启调试,并不是使用DEBUG环境变量,因为浏览器端不支持process.env.DEBUG访问。在浏览器端,使用localStorage 对象控制debug:
localStorage.debug = "worker:*"
参考: https://github.com/visionmedi...
欢迎关注公众号:梁兴臣每天了解一个NPM库,一年后成为Node.js高手
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/90663.html
摘要:昨天,我们认识了库的用法,用来控制输出调试日志。今天我们再了解一个日志记录的库,一个多路传输的日志记录库。所谓多路传输,是指,你可以自定义多个日志储存驱动,比如,将日志输出到终端的同时,将重要日志记录到文件中,甚至写到数据库中。 NPM酷库,每天两分钟,了解一个流行NPM库。 昨天,我们认识了debug库的用法,用来控制输出调试日志。但是,debug的特性适合于开发调试,并不适合程序记...
摘要:酷库,每天两分钟,了解一个流行库。今天,我们继续认识另一个日志框架,这个框架和有些类似,也提供了多路日志输出的功能。中称之为,而中称之为输出源。日志分类,可以用来标志不同的程序模块,类似库中的效果,默认分类为。 NPM酷库,每天两分钟,了解一个流行NPM库。 前两天,我们认识了 debug 库 和 winston 库,两款管理程序日志的库,其中debug偏向于适合开发调试,winsto...
摘要:有没有优雅的方式呢今天我们了解的库就是专门来控制输出弃用功能警告日志的。声明弃用函数使用包裹一层我们要废弃的函数,那么这个函数在被第一次调用时,就会自动输出警告信息。声明弃用属性使用声明对象指定的属性被弃用。 NPM酷库,每天两分钟,了解一个流行NPM库。 Node.js 高效率编程的基础是大量的NPM开源库,开发应用时,找特定领域的NPM库要比自己从头写代码要高效得多。如果某个领域没...
摘要:将如下代码写入到文件中,并在环境里执行如图虽然这两个输出看起来可能一样,但系统实际上对它的处理方式有不同。如图如果你没有启动调试日志,则不会看到任何这样的日志输出。 原文地址: https://www.twilio.com/blog/g...原文作者: DOMINIK KUNDEL 翻译作者: icepy 翻译出处: https://github.com/lightningm... ...
摘要:前两天,我们学习了中模式匹配文件列表的和的增强版,今天,我们将了解的基础库,用来模式匹配字符串的库。 前两天,我们学习了Node.js中模式匹配文件列表的 glob 和 glob 的增强版globby,今天,我们将了解 glob 的基础库: minimatch,用来模式匹配字符串的库。 其实,glob库支持的的各种模式都来自于minimatch。 minimatch 的用法 const...
阅读 1827·2021-11-24 09:39
阅读 2031·2021-09-22 15:50
阅读 1693·2021-09-22 14:57
阅读 667·2021-07-28 00:13
阅读 1008·2019-08-30 15:54
阅读 2329·2019-08-30 15:52
阅读 2578·2019-08-30 13:07
阅读 3728·2019-08-30 11:27