我的项目结构如下:
指令
应用程序
包装
记录器
配置
在我的记录器包中,我有以下代码,它只是创建一个记录器并替换 zap 的全局记录器
var logger *zap.Logger
var atomicLevel zap.AtomicLevel
func init() {
lmb := config.NewLumberjack()
atomicLevel = newAtomicLevel()
logger = newLogger(lmb, atomicLevel)
zap.ReplaceGlobals(logger)
setRotation(lmb)
onLogLevelChange()
}
func SetLevel(l string) {
atomicLevel.SetLevel(config.ParseLevel(l))
}
在我app package放置业务逻辑的主代码库中,我有时应该更改日志记录级别,我这样做
logger.SetLevel("debug")
zap.L().Debug("Message", zap.Duration("exec_time", time.Second))
问题是我不想从另一个包调用函数来更改完全位于不同包中的对象的行为。对于这个问题还有其他更好的方法吗?
红糖糍粑
相关分类