golang gorm2 logger 写入日志,自定义日志输出方式,日志输出到文件_Dreamy_Lois的博客-CSDN博客_gorm日志输出到文件

1. 简介

本篇文章内容:自定义gorm2中log写入方式,可以将信息打印到控制台或者是调用第三方日志框架写入日志。

2.环境

gorm.io/gorm v1.21.8

3.代码

type Writer struct{
}

func (w Writer) Printf(format string,args ...interface{}) {
    // log.Infof(format, args...)
    fmt.Printf(format, args...)
}

func openDB(dsn string) *gorm.DB{
    newLogger := logger.New(
        Writer{},
        logger.Config{
            SlowThreshold:              200 * time.Millisecond,   // Slow SQL threshold
            LogLevel:                   logger.Info,   // Log level
            IgnoreRecordNotFoundError:  true,          // Ignore ErrRecordNotFound error for logger
            Colorful:                   false,         // Disable color
        },
    )
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
        Logger: newLogger,
    })
    return db
}

4.理解

  1. gorm.io/gorm/logger 包中查看,日志接口,可以自己写自定义logger,但本教程是使用官方默认的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() (string, int64), err error)
}
  1. 查看1中的实现类,可以在该包下找到已经实现了的logger
type logger struct {
    Writer
    Config
    infoStr, warnStr, errStr            string
    traceStr, traceErrStr, traceWarnStr string
}
  1. 自定义一个 Writer ,实现接口即可
// Writer log writer interface
type Writer interface {
    Printf(string, ...interface{})
}

原网址: 访问
创建于: 2022-10-13 12:44:05
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论