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

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

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

安装

npm install --save bunyan

使用

// hi.js
var 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 | .\node_modules\.bin\bunyan
还在使用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.child

bunyan可以客制化一个针对你的应用的子组件的日志

//hi.js
var 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.js
var 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(`



HTML Response


Hi




`);
}).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日志框架


分享到:


相關文章: