grom设置全局日志实现执行并打印sql语句

 更新时间:2025年03月02日 11:35:56   作者:code--cat  
本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些方法,可以更好地控制和记录数据库操作的日志信息

gorm中的自定义日志

Gorm 有一个 默认 logger 实现,默认情况下,它会打印慢 SQL 和错误

Logger 接受的选项不多,您可以在初始化时自定义它,例如:

newLogger := logger.New(
  log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
  logger.Config{
    SlowThreshold:              time.Second,   // Slow SQL threshold(慢速SQL阈值)
    LogLevel:                   logger.info, // Log level(日志级别)
    IgnoreRecordNotFoundError: true,           // Ignore ErrRecordNotFound error for logger
    ParameterizedQueries:      true,           // Don't include params in the SQL log(忽略记录器的ErrRecordNotFound错误)
    Colorful:                  true,          // Disable color(禁用颜色)设置彩色打印
  },
)

// Globally mode
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
  Logger: newLogger,
})

gorm中日志的其他操作

日志级别

GORM 定义了这些日志级别:Silent、Error、Warn、Info

db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
  Logger: logger.Default.LogMode(logger.Silent),
})

Debug

Debug 单个操作,将当前操作的 log 级别调整为 logger.Info

db.Debug().Where("name = ?", "jinzhu").First(&User{})

自定义 Logger

参考 GORM 的 默认 logger 来定义您自己的 logger

Logger 需要实现以下接口,它接受 context,所以你可以用它来追踪日志

type Interface interface {
    LogMode(LogLevel) Interface
    Info(context.Context, string, ...interface{})
    Warn(context.Context, string, ...interface{})
    Error(context.Context, string, ...interface{})
    Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error)
}

详细内容可参考gorm官方文档:https://gorm.io/zh_CN/docs/logger.html

到此这篇关于grom设置全局日志实现执行并打印sql语句的文章就介绍到这了,更多相关grom设置全局日志 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang映射Map的方法步骤

    golang映射Map的方法步骤

    这篇文章主要介绍了golang映射Map的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 简介Go语言中的select语句的用法

    简介Go语言中的select语句的用法

    这篇文章主要介绍了简介Go语言中的select语句的用法,是golang入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • 解析Go 中的 rune 类型

    解析Go 中的 rune 类型

    rune类型是 Go 语言的一种特殊数字类型,Go 语言通过rune处理中文,支持国际化多语言,本文给大家介绍Go 中的 rune 类型,感兴趣的朋友一起看看吧
    2022-03-03
  • 使用Go中的Web3库进行区块链开发的案例

    使用Go中的Web3库进行区块链开发的案例

    区块链作为一种分布式账本技术,在近年来取得了巨大的发展,而Golang作为一种高效、并发性强的编程语言,被广泛用于区块链开发中,本文将介绍如何使用Golang中的Web3库进行区块链开发,并提供一些实际案例,需要的朋友可以参考下
    2023-10-10
  • golang 的string与[]byte转换方式

    golang 的string与[]byte转换方式

    这篇文章主要介绍了golang 的string与[]byte转换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • golang Strings包使用总结

    golang Strings包使用总结

    Go语言在处理字符串时,strings包提供了丰富的函数,如常用的strings.Contains检查是否包含子串,strings.Join拼接字符串数组,strings.Split切割字符串等,熟悉这些函数能有效提高编程效率,尤其是在算法竞赛或笔试题中
    2021-03-03
  • Go 语言进阶单元测试示例详解

    Go 语言进阶单元测试示例详解

    这篇文章主要为大家介绍了Go 语言进阶单元测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Go语言基础函数基本用法及示例详解

    Go语言基础函数基本用法及示例详解

    这篇文章主要为大家介绍了Go语言基础函数基本用法及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • Go语言中hot path的作用

    Go语言中hot path的作用

    热路径指的是经常执行的性能敏感的代码路径,优化这些路径可以显著提高应用性能,通过工具如pprof进行性能分析,识别和优化热路径,能有效提升系统的响应能力和可靠性
    2024-10-10
  • go build 通过文件名后缀实现不同平台的条件编译操作

    go build 通过文件名后缀实现不同平台的条件编译操作

    这篇文章主要介绍了go build 通过文件名后缀实现不同平台的条件编译操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论