如何在Node.js中优雅地实现全链路日志打印?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1077个文字,预计阅读时间需要5分钟。
node如何优雅地打印全链路日志?
下面本篇章内容就为大家介绍在node中优雅地打印全链路日志的方法,希望对大家有所帮助!
当用户遇到线上某个功能使用报错时,如何快速准确定位问题呢?
node如何优雅地打印全链路日志?下面本篇文章就来给大家介绍一下在node中优雅打印全链路日志的方法,希望对大家有所帮助!
当用户报问题:线上某个功能使用报错时,如何快速准确地定位?当某个请求接口返回数据缓慢时,如何有效地追踪优化?
一、原理和实践众所周知,当一个请求到来时,大概会有以下日志产生:
1、AceesLog:用户访问日志
2、Exception:代码异常日志
3、SQL:sql查询日志
4、ThirdParty:第三方服务日志
该如何追踪一条请求产生的所有日志?
一般做法是使用一个requestId来做唯一标识,
然后写一个中间件,把requestId注入到context上下文中,当需要打日志时,再从context中取出打印,
在第三方服务和SQL日志中,还需要把requestId传入到相应的函数里面打印,这样层层传递,实在太麻烦,代码侵入性也比较强。
我们的目标是降低代码侵入性,一次注入,自动跟踪。
经过调研,async_hooks可以追踪异步行为的生命周期,在每个异步资源(每个请求都是一个异步资源)中,它都有2个ID,
分别是asyncId(异步资源当前生命周期ID),trigerAsyncId(父级异步资源ID)。
本文共计1077个文字,预计阅读时间需要5分钟。
node如何优雅地打印全链路日志?
下面本篇章内容就为大家介绍在node中优雅地打印全链路日志的方法,希望对大家有所帮助!
当用户遇到线上某个功能使用报错时,如何快速准确定位问题呢?
node如何优雅地打印全链路日志?下面本篇文章就来给大家介绍一下在node中优雅打印全链路日志的方法,希望对大家有所帮助!
当用户报问题:线上某个功能使用报错时,如何快速准确地定位?当某个请求接口返回数据缓慢时,如何有效地追踪优化?
一、原理和实践众所周知,当一个请求到来时,大概会有以下日志产生:
1、AceesLog:用户访问日志
2、Exception:代码异常日志
3、SQL:sql查询日志
4、ThirdParty:第三方服务日志
该如何追踪一条请求产生的所有日志?
一般做法是使用一个requestId来做唯一标识,
然后写一个中间件,把requestId注入到context上下文中,当需要打日志时,再从context中取出打印,
在第三方服务和SQL日志中,还需要把requestId传入到相应的函数里面打印,这样层层传递,实在太麻烦,代码侵入性也比较强。
我们的目标是降低代码侵入性,一次注入,自动跟踪。
经过调研,async_hooks可以追踪异步行为的生命周期,在每个异步资源(每个请求都是一个异步资源)中,它都有2个ID,
分别是asyncId(异步资源当前生命周期ID),trigerAsyncId(父级异步资源ID)。

