使用zap日志替代xorm日志

news/2024/11/18 6:48:57/

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.ppmy.cn/news/1022513.html

相关文章

为什么要学习Oracle技术?

为什么要学习Oracle技术? 众所周知,Oracle占据着企业数据库领域超过48.1%的市场份额,成为高端企业数据库软件的绝对领导者。随着时间的推移,企业数据库的规模不断扩大,富有经验的资深OracleDBA越来越受到企业的欢迎。我们从著名的…

中国卡拉胶行业市场调研与投资预测报告(2023版)

内容简介: 卡拉胶可细分为K型、I型和L型。K型卡拉胶形成更坚硬而易碎的凝胶,广泛用于糖浆增稠剂,而I型卡拉胶则形成柔软的凝胶,可用作稳定剂。有别于K型卡拉胶与I型卡拉胶,L型卡拉胶用作增稠剂,为饮料产生…

vue3动态路由配置

动态路由是指在运行时根据某些条件创建或修改路由。这对于需要动态生成路由的应用程序非常有用,例如基于用户权限的路由控制。 例子: 在Vue 3中,可以使用createRouter()函数来创建一个路由实例,并使用router.addRoute()方法添加路…

Chrome浏览器安装Axure插件无法打开本地axure文件

Chrome浏览器安装Axure插件无法打开本地axure文件 Chrome浏览器按照axure插件即可打开 1,下载axure插件,由于Chrome国内连不了商店,只能另外下载 https://download.csdn.net/download/u013303534/88204888 2,Chrome安装插件&#…

让视频的poster铺满整个框

让视频的poster铺满整个框 只需给video设置object-fit: 的 属性 就行 fill(默认默认,不保证保持原有的比例,内容拉伸填充整个内容容器。), cover(保持原有尺寸比例。但部分内容可能被剪切。)&…

Dex文件混淆(一):BlackObfuscator

Dex文件混淆(一):BlackObfuscator 首发地址:http://zhuoyue360.com/crack/105.html 文章目录 Dex文件混淆(一):BlackObfuscator1. 前言2.小试牛刀3. 参考学习1. dex2jar源码简析2. BlackObfuscator简析1. 控制流平坦化1. 控制流平坦化基本介绍 2. Dex解析…

Windows、 Linux 等操作系统的基本概念及其常见操作

Windows 和 Linux 是两种常见的操作系统,它们在计算机领域中广泛使用。下面我将为您介绍它们的基本概念以及一些常见的操作。 **Windows 操作系统:** 1. **基本概念:** Windows 是由微软公司开发的操作系统系列,旨在为个人计算机…

判断一个数是否为2的N次方(阿里面试题)

说明: 这道题解法需要按位比较,也是计算机组成原理中的基础知识。在计算机中,数值通常以二进制形式进行表示和处理。按位比较就是将两个数的二进制表示的对应位进行比较的操作。 在计算机组成原理中,按位比较通常是通过位逻辑运算…