golang gorm2 logger 写入日志,自定义日志输出方式,日志输出到文件

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{})
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值