当前位置: 首页 > news >正文

使用zap日志替代xorm日志

xorm提供了自定义日志的接口,它的接口定义如下:

// Logger is a logger interface
type Logger interface {Debug(v ...interface{})Debugf(format string, v ...interface{})Error(v ...interface{})Errorf(format string, v ...interface{})Info(v ...interface{})Infof(format string, v ...interface{})Warn(v ...interface{})Warnf(format string, v ...interface{})Level() LogLevelSetLevel(l LogLevel)ShowSQL(show ...bool)IsShowSQL() bool
}

也就是说我们可以自己实现这些接口,用自己的日志框架啊替代原生的日志框架

下面是我用zap实现该接口的代码

type ZapLogger struct {*zap.SugaredLoggershowSQL boollevel   log.LogLevel
}func (c *ZapLogger) Warnf(format string, v ...interface{}) {if !c.showSQL || c.level > log.LOG_WARNING {return}c.SugaredLogger.Warnf(format, v)
}func (c *ZapLogger) Infof(format string, v ...interface{}) {if !c.showSQL || c.level > log.LOG_INFO {return}c.SugaredLogger.Infof(format, v)
}func (c *ZapLogger) Errorf(format string, v ...interface{}) {if !c.showSQL || c.level > log.LOG_ERR {return}c.SugaredLogger.Errorf(format, v)
}func (c *ZapLogger) Debugf(format string, v ...interface{}) {if !c.showSQL || c.level > log.LOG_DEBUG {return}c.SugaredLogger.Debugf(format, v)
}
func (c *ZapLogger) IsShowSQL() bool {return c.showSQL
}
func (c *ZapLogger) ShowSQL(show ...bool) {c.showSQL = show[0]
}
func (c *ZapLogger) SetLevel(l log.LogLevel) {c.level = l
}func (c *ZapLogger) Level() log.LogLevel {return c.level
}

这段代码实现了xorm.logger接口

直接在engine出调用SetLogger即可

http://www.lryc.cn/news/118459.html

相关文章:

  • YOLOv5-7.0实例分割+TensorRT部署
  • 回归决策树模拟sin函数
  • NeRF基础代码解析
  • 职场新星:Java面试干货让你笑傲求职路(三)
  • 获取指定收获地址的信息
  • 突破笔试:力扣全排列(medium)
  • gitlab 503 错误的解决方案
  • 智能离子风棒联网监控静电消除器的主要功能和特点
  • matplotlib 设置legend的位置在轴最上方,长度与图的长度相同
  • Docker-Compose 安装rabbitmq
  • leetcode357- 2812. 找出最安全路径
  • Oracle连接数据库提示 ORA-12638:身份证明检索失败
  • 在 Linux 中使用 systemd 注册服务
  • (03)Unity HTC VRTK 基于 URP 开发记录
  • .bit域名调研
  • Vue数组变更方法和替换方法
  • Centos-6.3安装使用MongoDB
  • Mysql 复杂查询丨联表查询
  • C语言进阶第二课-----------指针的进阶----------升级版
  • 若依vue -【 111 ~ 更 ~ 127 完 】
  • vue-pc端实现按钮防抖处理-自定义指令
  • python解决8皇后问题
  • xcode打包导出ipa
  • 更优雅地调试SwiftUI—借助LLDB
  • 2.4 网络安全新技术
  • 人生天地之间,若白驹之过隙,忽然而已
  • MySQL — MVCC
  • Android模板设计模式之 - 构建整个应用的BaseActivity
  • 浏览器缓存技术--localStorage和sessionStorage原理与使用
  • 无涯教程-Perl - endservent函数