4
全局gin对象如何在子模块中修改Logger
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.
全局gin对象如何在子模块中修改Logger
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属性 } |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK