全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 7 分钟 ✍️ juanwangdev

GORM 日志配置与输出

GORM 提供灵活的日志系统,可配置慢查询阈值、日志级别与输出格式,本文介绍完整配置方法。

Logger 初始化

Go
import (
    "gorm.io/gorm"
    "gorm.io/gorm/logger"
    "log"
    "os"
    "time"
)

newLogger := logger.New(
    log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
    logger.Config{
        SlowThreshold:             time.Second,  // 慢查询阈值
        LogLevel:                  logger.Info,  // 日志级别
        IgnoreRecordNotFoundError: true,         // 忽略 ErrRecordNotFound
        ParameterizedQueries:      false,        // 参数化查询
        Colorful:                  false,        // 禁用彩色输出
    },
)

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    Logger: newLogger,
})

日志级别

级别说明
logger.Silent关闭所有日志
logger.Error仅记录错误
logger.Warn记录错误和警告
logger.Info记录错误、警告和慢查询
Go
// 仅记录错误
db.Session(&gorm.Session{Logger: db.Logger.LogMode(logger.Error)})

// 开发环境开启所有日志
db.Session(&gorm.Session{Logger: db.Logger.LogMode(logger.Info)})

慢查询配置

Go
// 设置 200ms 为慢查询阈值
newLogger := logger.New(
    log.New(os.Stdout, "\r\n", log.LstdFlags),
    logger.Config{
        SlowThreshold: 200 * time.Millisecond,
        LogLevel:      logger.Warn,
    },
)

自定义日志输出

Go
// 自定义日志输出格式
type CustomLogger struct{}

func (l *CustomLogger) Printf(format string, args ...interface{}) {
    log.Printf("[GORM] "+format, args...)
}

db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{
    Logger: logger.New(
        &CustomLogger{},
        logger.Config{LogLevel: logger.Info},
    ),
})

生产环境建议设置 logger.Error 级别并关闭彩色输出,减少日志体积。

要点总结

  • 使用 logger.New 配置日志参数
  • 日志级别分 Silent/Error/Warn/Info 四档
  • SlowThreshold 设置慢查询阈值
  • 可实现 Printf 接口自定义输出格式

文章存放路径:D:\git2\jwdev\articles\GORM\进阶\错误处理与日志\日志配置与输出.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 GORM 数据库错误处理
下一篇 → GORM 错误类型识别
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库