我从头到尾实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能;自己觉得还挺好用的,并且打算长期维护!
github地址:https://github.com/gone-io/gone
文档地址:https://goner.fun/
请帮忙在github上点个 ⭐️吧,这对我很重要 ;万分感谢!!
使用traceId追踪日志
在Web应用中,一次请求可能会经过很多业务流程的处理;为了方便排查问题,我们希望所有业务流程打印的日志拥有一个统一的traceId;拥有traceId,就可以将整个业务流程的日志都串起来,回溯和分析问题出在哪个业务环节。
在其他开源框架中,一般采用策略是在所有的函数中都增加context.Context
参数,golang官方也是这样推荐的。然而我们认为这样平白无故的多打一些代码实在很难受,我们希望不用在每个函数中传递额外参数实现打印日志中附件traceId。为此,我们在Gone中提供了一个内置的Goner来提供这样的功能。
将相关Goners埋葬到Cemetery
tip: 了解Gone的核心概念和术语请阅读:Gone的核心概念
在这里,我们采用github.com/gone-io/gone/tree/main/goner
包中的 BasePriest
来完成相关Goners的埋葬。在BasePriest
中会将 tracer
、config
、logrus
相关的Goners同埋葬到Cemetery,这三个包一般一起使用。
func MasterPriest(cemetery gone.Cemetery) error {
_ = goner.