Zap实现多logger自定义等级

本文探讨了Zap日志库在处理多logger和不同等级需求时的局限性,介绍了如何通过封装核心(core)和重写`With`方法来实现logger的等级定制。这种方法允许在不重复生成logger的情况下,灵活地调整和过滤日志等级,同时避免了全局变量和加锁的问题。
摘要由CSDN通过智能技术生成

Zap实现多logger自定义等级

Zap定义的logger在做等级划分的时候,可以使用AtomicLevel变量在生成logger的时候,通过zapcore.NewCore(zapcore.NewJSONEncoder(cfg), writer, atomicLevel)生成一个相应的core去做等级过滤,并且logger的多个core可以配置多个AtomicLevel变量实现多路多encoder输出不同格式,不同路径的文件,此处不再赘述,只要使用AutomicLevel.SetLevel()就可以实现core内level的改变,但是在实际使用中,我们需要使用现有logger配置多个不同等级logger,这样可以避免重复生成相同参数的新logger,Zap提供了WithOption()方法去实现logger的复制与option选项的wrap,但是在此方法中,只提供了IncreaseLevel()选项,即我们只能对已有logger做升级操作,却并不能对logger进行降级,并且IncreaseLevel()本质上只是对core做了一层包裹,在实际使用中,依然要进入最底层core判断new的时候传入的level变量的等级做过滤,这对logger的使用造成了很多不便。

于是采用封装的方式重写core的EnabledCheck,以及With函数,并在新复合core中组合一个level变量,使得后续logger的所有等级过滤操作(本质上都是在core的EnabledCheck函数中做过滤)全部使用封装的lev

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值