NPM酷库,天天两分钟,了解一个流行NPM库。html
前两天,咱们认识了 debug 库 和 winston 库,两款管理程序日志的库,其中debug偏向于适合开发调试,winston则更适合在一个完整的 Node.js 应用中管理平常日志记录。node
今天,咱们继续认识另外一个日志框架 log4js,这个框架和 winston 有些相似,也提供了多路日志输出的功能。所谓多路,意思是你能够自定义多个日志储存驱动,好比,将日志输出到终端的同时,将重要日志记录到文件中,甚至写到数据库中。 winston 中称之为 Transports,而log4js 中称之为 Appenders (输出源)。git
注意,虽然 log4js 的名字很像JAVA的日志库 log4j,但二者没什么关系,而且接口也是不一样的
const log4js = require('log4js'); const logger = log4js.getLogger(); logger.level = 'debug'; logger.debug("Some debug messages");
上边就是log2js 最简单的用法,程序会将日志输出到控制台:github
[2018-01-06T12:23:43.706] [DEBUG] default - Some debug messages
注意,代码中将日志输出等级设置为debug
,程序会输出DEBUG级别以上的日志,若是不设置,默认级别为OFF
即关闭全部日志输出!数据库
日志级别,debug/info/error 等,参考 RFC5424。框架
日志分类,能够用来标志不一样的程序模块,相似debug
库中的效果,默认分类为 default
。函数
输出源,你能够选择不一样的输出源将日志输出到控制台、文件、数据库,甚至Email。ui
log4js 的主要日志接口,能够实例多个Logger,每个Logger均可选地设置 Category,因此咱们的应用中,不一样模块实例化不一样的Logger对象,输出的日志中就会记录下不一样模块的日志输出。spa
Layout是日志输出时用来格式化日志的函数,你能够自定义不一样的Layout函数,用来自定义日志格式。debug
每一次调用日志记录函数就会生成一个LogEvent:
logger.debug("Some debug messages");
LogEvent 中包含当前时间戳、日志级别、分类等信息。
log4js: https://github.com/log4js-nod...
log4js文档: https://log4js-node.github.io...
RFC 5424: https://tools.ietf.org/html/r...
天天了解一个NPM库,一年后成为Node.js高手