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
📝 发现内容有误?点击此处直接编辑