栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

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

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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{})
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/907350.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号