Gorm日志设置

gorm,日志,设置 · 浏览次数 : 358

小编点评

**LoggerGorm默认实现** LoggerGorm提供了一个默认的 logger 实现,默认日志数据级别为 **warn**,并输出慢 SQL。 **配置** 默认情况下,日志数据级别为 **warn**,输出慢 SQL。可以使用 `Config` 设置日志数据级别和是否输出慢 SQL。 **自定义 LoggerGorm** 为了自定义 LoggerGorm,需要实现 `logger` 接口,并在 `Config` 中设置 `Logger`。 **接口 `logger`** `logger` 接口包含以下方法: * `LogMode(LogLevel)`:设置日志模式(例如 `Info`, `Error`) * `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)`:记录 SQL 查询并输出执行结果 **示例** ```go import ( "log/logger" ) // Configures the logger to use the default configuration. cfg := logger.Config{} // Sets the logger level to "info". cfg.Logger = logger.New( log.New(os.Stdout, "\\r\\", logger.LstdFlags), Config{ SlowThreshold: 200 * time.Millisecond, LogLevel: "info", IgnoreRecordNotFoundError: false, Colorful: true, }, ) // Creates a LoggerGorm client. client, err := gorm.Open(mysql.Open("test"), &gorm.Config{ Logger: &logger.Logger{}, }) ``` **注意** * `LoggerGorm` 允许自定义 Logger。 * `Config` 中的 `SlowThreshold` 和 `LogLevel` 属性是默认值。 * 可以根据需要修改 `Config`。

正文

Logger

Gorm提供了一个默认的logger实现,默认情况下日志数据级别为warn,同时输出慢SQL:

Default = New(log.New(os.Stdout, "\r\n", log.LstdFlags), Config{
	SlowThreshold:             200 * time.Millisecond,  // 慢sql阈值,200ms
	LogLevel:                  Warn,                    // 日志输出级别
	IgnoreRecordNotFoundError: false,                   // 不忽略记录不存在的错误
	Colorful:                  true,                    // 彩色输出日志
})

log配置可以全局配置,也可以配置为会话级别:

// 配置全局
db, err := gorm.Open(mysql.Open("test"), &gorm.Config{
  Logger: newLogger,
})

// 配置会话
tx := db.Session(&Session{Logger: newLogger})

日志级别

支持SilentErrorWarnInfo

自定义Logger

Gorm也支持自定义Logger,需要实现以下接口:

// Interface logger interface
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)
}

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意


与Gorm日志设置相似的内容: