还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架
author:一佰互联 2019-03-26   click:215

简介:Bunyan是一个简单易用的JS日志框架,可以工作在多种环境下,这里以Nodejs为例说明Bunyan的基本用法。是时候替换console.log的写法了。安装npm install --save bunyan使用// hi.jsvar bunyan = require("bunyan"); ...

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

Bunyan是一个简单易用的JS日志框架,可以工作在多种环境下,这里以Nodejs为例说明Bunyan的基本用法。是时候替换console.log的写法了。

安装

npm install --save bunyan

使用

// hi.jsvar bunyan = require("bunyan");var log = bunyan.createLogger({name: "myapp"});log.info("hi");log.warn({lang: "fr"}, "au revoir");
运行
node hi
默认输出json格式,对人类不友好。

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

换一种运行方式
node hi.js | .ode_modules.binunyan

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

这样就有了易读的格式。安装到全局:
npm install -g bunyan
指定log等级
node hi.js | bunyan -l warn

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

指定多个输出
var bunyan = require("bunyan");//var log = bunyan.createLogger({name: "myapp"});var log = bunyan.createLogger({ name: "myapp", streams: [ { level: "info", stream: process.stdout // log INFO and above to stdout }, { level: "error", path: "c:/temp/log/myapp-error.log" // log ERROR and above to a file } ]});log.info("hi");log.warn({lang: "fr"}, "au revoir");log.error("this is an error!");
将info及以上的log输出到控制台,将error及以上等级的log输出到文件。

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

控制台输出

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

文件输出

子日志log.childbunyan可以客制化一个针对你的应用的子组件的日志
//hi.jsvar bunyan = require("bunyan");var log = bunyan.createLogger({name: "myapp"});function Wuzzle(options) { this.log = options.log.child({widget_type: "wuzzle"}); this.log.info("creating a wuzzle")}Wuzzle.prototype.woos = function () { this.log.warn("This wuzzle is woosey.")}log.info("start");var wuzzle = new Wuzzle({log: log});wuzzle.woos();log.info("done");
在Wuzzle中创建一个子日志,可以任意添加额外的信息(widget_type: "wuzzle"),

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

对象序列化
//hi.jsvar bunyan = require("bunyan");var http = require("http");function reqSerializer(req) { return{ method:req.method, url: req.url, headers: req.headers }}var log = bunyan.createLogger({name:"myapp",serializers:{req: reqSerializer}});http.createServer(function(req, res) {log.info({req:req});res.writeHead(200, {"Content-Type": "text/html"}); res.end(` <!DOCTYPE html> <html> <head> <title>HTML Response</title> </head> <body> <h1>Hi</h1> </body> </html> `);}).listen(3000);log.info("File server running on port 3000");

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

代码客制化request对象的输出日志,会输出请求方法,请求url和cookie信息。运行
node hi.js | bunyan
运行后在浏览器浏览:
http://localhost:3000/

还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱2522407257@qq.com。更多相关资讯,请到巅云www.yx10011.com学习互联网营销技术请到巅云建站www.yx10011.com。