4

全局gin对象如何在子模块中修改Logger

 1 year ago
source link: http://yongqing.is-programmer.com/posts/216540.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

全局gin对象如何在子模块中修改Logger

妙音 posted @ 2022年12月11日 17:24 in golang with tags gin , 34 阅读
gin是通过中间件写日志, 日志对象是中间件的闭包变量。在use加载中间件完成之后,无法修改日志对象。 该如何办呢?

一般设置方法

以下是设置gin日志的方法
#方法一
gin.DefaultWriter = xxx
gin.DefaultErrorWriter = xxx
app := gin.Default()
app.Use(xxx)
#方法二
app := gin.Default()
app.Use(gin.LoggerWithWriter(xxx))

当情况发生变化

1. app := gin.Default()被放在了顶层模块,并且加载了默认中间件
2. 程序真正的log在子模块中初始化
3. 在子模块中如何修改gin的日志?
借助zapio.Writer对象,通过修改它的Log属性实现
# 顶层模块gin.go
gin.DefaultWriter =&zapio.Writer{Log:zap.L()}
gin.DefaultErrorWriter = gin.DefaultWriter
app := gin.Default()
app.use(xxx)
#子模块xxx/sim/http.go
if gl, ok := gin.DefaultWriter.(*zapio.Writer);ok{
gl.Log = gs.log.Desugar()   #修改Log属性
}
评论 (0)

[取消回复评论]

昵称 登录 E-mail: *
Web:
Twitter:
当有新评论通过 E-mail 通知我
loading captcha image...
(输入验证码)

or Ctrl+Enter


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK