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

news/2024/7/7 22:26:16
03ba832154faf26000a68ef86b841539.png
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格式,对人类不友好。

628e0d0bbd2744a0d84cac1ea7cf09af.png

换一种运行方式

node hi.js | .ode_modules.binbunyan
cefe96b7150f013597cdeb3800a6ebaa.png

这样就有了易读的格式。

安装到全局:

npm install -g bunyan

指定log等级

node hi.js | bunyan -l warn
2a79807c54f23d3712761b2381bf7eea.png

指定多个输出

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

2dea1dc8c9d727476861f22f68659d65.png

控制台输出

3092ea20787ca8cac517d8d078a85170.png

文件输出

子日志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'),

ae5267457c279abc512dfacbe3a4581d.png

对象序列化

//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");
4a4ef8b04221a2b10ccce8fa61add2e0.png

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

运行

node hi.js | bunyan

运行后在浏览器浏览:

http://localhost:3000/
4030d5be8a344fe047d1c8bcfde7e84c.png

http://lihuaxi.xjx100.cn/news/293693.html

相关文章

在Sun Enterprise Server上配置SCSI磁带机

在Sun Enterprise Server上配置SCSI磁带机 不是每一个运行 Solaris Operating System 的地方都拥有备份解决方案的资源,它们甚至不需要这些资源,这些备份解决方案如价格昂贵的磁带自动更换机、磁带库或 Tape Silo。通常所需要的只是根文件系统、重要数据…

使用python对学生表的查询_多表组合查询——Python操作Mysql数据库

前面我们介绍了单张表的查询,包括模糊查询、分组、排序、各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的表进行组合查…

hive币涨幅空间大吗_空间大、油耗低,家用MPV领域的三款全能好车,你心动了吗?...

汽车行业一直有“金九银十”的说法,眼下正值10月购车黄金季,很多朋友都在考虑入手一辆爱车。对于已经成家立业的小伙伴来说,买车时自然会更关注家庭的用车需求。而汽车作为大宗消费品,置换率低,使用率高,所…

检查当前ORACLE连接数

检查当前ORACLE连接数并写入文件 [oraclerac1 shell]$ cat ip.sh #!/bin/sh date1date %Y%m%d date2"date %Y-%m-%d_%R" ipnumnetstat -antp|grep :1521|awk {print $5}|awk -F":" {print $1}|grep ^[^0]|sort |uniq -c|sort|awk -v a" ${date2…

python tqdm_Python基础 | 一个被忽视的神器tqdm

欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。首先来看一段视频,是不是很酷?日常工作和学习中,经常需要观察当前…

input框选中时如何不出灰框_如何建立学习目标:这个SMART原则,你要了解,家长看懂教给孩子...

作者 | 好看的 原创来川学习方法,学出幸福感点击标题下方“来川学习方法”蓝字关注我经常跟学生们说一句话:学霸都是赢在起跑线上的。这个起跑线指的是什么?早点启蒙、多上补习班、提前把老师要教的内容学一遍?不是。我说的起跑线…

lingo变量无限制版本_java变量必看知识点

点击蓝字关注我们Java 语言是强类型(Strongly Typed)语言,强类型包含以下两方面的含义:所有的变量必须先声明、后使用。指定类型的变量只能接受类型与之匹配的值。这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋的…

Windows xp 无人值守远程安装部署

一、实验准备1、服务器(beijing)安装以下服务:1.1 安装AD并同时安装DNS1.2 安装DHCP1.3 安装“远程安装服务”2、客户机:应支持网络启动,网卡上有启动芯片(PXE芯片)二、实验拓扑三、实验步骤:Be…