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格式,对人类不友好。

换一种运行方式

node hi.js | .ode_modules.binbunyan

这样就有了易读的格式。

安装到全局:

npm install -g bunyan

指定log等级

node hi.js | bunyan -l warn

指定多个输出

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输出到文件。

控制台输出

文件输出

子日志log.child

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

//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'),

对象序列化

//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(`    HTML Response

Hi

`);}).listen(3000);log.info("File server running on port 3000");

代码客制化request对象的输出日志,会输出请求方法,请求url和cookie信息。

运行

node hi.js | bunyan

运行后在浏览器浏览:

http://localhost:3000/

idea log 不输出error_还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架相关推荐

  1. console 一行_你还在用 console.log 调试?

    英文 | Giancarlo Buomprisco 译文 | 梁天培 链接 | juejin.im/post/5d18d6eb6fb9a07edc0b6cc4 前言:Chrome 开发工具 当您的代码 ...

  2. JS控制台输出,别只会 console.log 了

    引言 控制台日志输出,别再只会 console.log 了,其实Console 对象还提供了很多方法.比如console.info().console.warn() .console.error()等 ...

  3. 神奇的null 请输出结果并进行解释 console.log([typeof null, null instanceof Object])

    ['object',false] 在javascript第一版本中,单个值在栈中占用32位的存储单元,而这32位存储单元又分为类型标签(1-3位)和实际数据. 类型标签存储在低位中. 000 => ...

  4. 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???...

    在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...

  5. console linux 口 没输出_Console很飒,不止log

    日常工作中,难免存在为了代码调试而试验性地输出一些东西,曾经都爱用alert(),高兴了弹个数据,但让人头疼的是,它会中断代码执行,得手动关掉,所以有人就用 document.write(),这样也有 ...

  6. AndroidT(13) Log 系统 -- C plus plus 语言格式的LOG输出(二)

    1.概览   上一章提到的是在Android系统中,以C语言格式方式进行log输出.本章就来讲讲c++语言格式的. std::cout<<"This is a c++ log&q ...

  7. 由哪个log先输出引出的event loop思考

    这篇文章就不再聊关于promise的各种好处和用法了,如果不了解请自行Google啦! 我相信很多人在面试的时候遇到过这样一道面试题: console.log(0) let p = Promise.r ...

  8. 扩展:js控制台输出,除了 console.log还有哪些?

    介绍: js的console你可以在firefox的firedbug或者ie和google的f12调试模式下看到,这些主流浏览器的调试模式的控制可以输出一些信息,你的一些js代码测试可以直接在cons ...

  9. 控制台输出console.log()的用法

    用console.log代替alert和document.write,工作会变得轻松.用console.log在控制台展开对象查看具体信息,可以直接看到对象信息,而不会显示[object Object ...

最新文章

  1. nvidia share有什么用_NVIDIA共享无法在Win10上运行或响应
  2. linux 多线程的基础 交通信号灯学习笔记 :信号详解
  3. RunLoop总结与面试
  4. can-utils源码解析cansend
  5. 【C++基础学习】二维数组的动态分配及参数传递
  6. macos 编译php,TODO:macOS编译PHP7.1
  7. java中notify是什么意思_java中wait,notify,notifyAll是什么?
  8. 达飞控股不断践行新时代企业责任
  9. 翘首以盼Windows 8
  10. oracle数据库简单的学多久,讲讲新人的oracle数据库学习
  11. linux java7 64位_linux jdk1.7 64位tar.gz下载安装配置教程(完美版)
  12. 一分钟学会神经网络3——图解深度学习原理(有这篇博客就够了)
  13. 如何将一个向量投影到一个平面上_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...
  14. python encoder decoder_从零开始学Python自然语言处理(25)—— 通用的Encoder-Decoder模型框架...
  15. 传统语音增强——基于先验信噪比的维纳滤波语音降噪算法
  16. android循环录制,按键精灵安卓版为什么我录制的脚本无法循环
  17. 什么软件可以搜索python答案_什的组词
  18. excel去除重复处理
  19. 自动打开搜狗搜索的前五个链接
  20. 送你一把学习【线性代数】的钥匙

热门文章

  1. 分布式mysql中间件(mycat)
  2. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作
  3. Python 排序的姿势,你们,你们还要学习..学习一个
  4. 将SQL for xml path('')中转义的字符正常显示
  5. 激活当前视图菜单高亮呈现 V2.0
  6. vim设置窗体大小的环境变量
  7. Log4j官方文档翻译(九、输出到数据库)
  8. Log4j 2 介绍
  9. isMobile 一个简单的JS库,用来检测移动设备
  10. lvs调整hash表大小