来自ipad 的笔记。。。。
tsw 是腾讯出的一个nodejs 染色和日志基建,刚好快速看下
其实原理也很简单,主要是基于原生函数的劫持,然后把在特定位置用winston写入日志, 从文档上面来看,主要是是支持 console、dns lookup、http create server 以及 http request 和response的染色,还是上面那句话,说白了就是hijack
当然了,对于hijack,一般有两个点,第一,要提供能恢复原始方法的api,也就是restore original function, 第二,就是hijack的方法要足够底层,这样相对来说,可以无缝支持的框架更多,因为其他的nodejs框架说白了就是对原生nodejs 方法的二次封装
举源码里面看到的几个案例
例如对于日志的劫持,除了对 console 进行劫持,还需要注意对 process stdout write 和 process stderr write 进行劫持,不然的话就有部分打印日志劫持不到
对于 dns 的劫持,主要是对 dns lookup的劫持,因为我们希望,如果dns 查询时间超时,我们不仅仅可以打印日志,还希望可以抛出事件,让框架使用者监听,做一些业务层面的事情,所以也在hijack里面有定时器,默认是3s 超时,然后抛给框架和使用者
对于 httpcreatesever的劫持,还包括对于request 和response的劫持,这块有时间继续看,反正原理都差不多