GORM自定義日志配置


Gorm 建立了對 Logger 的支持,默認模式只會在錯誤發生的時候打印日志。可以通過gorm SetLogger(log logger)方法 改變gorm 打日志的行為。

gorm 中 logger的接口:

type logger interface {
	Print(ctx context.Context, v ...interface{})
}
1
2
3
v 的值為:

1個參數: level,表示這個是個什么請求,可以是“sql”
2個參數:打印sql的代碼行號,如/Users/yejianfeng/Documents/gopath/src/gorm-log/main.go:50, 
3個參數: 執行時間戳
4個參數: sql語句
5參數:如果有預處理,請求參數,第六個參數是這個sql影響的行數。

zaplog集成示例

DB.Debug()
DB.LogMode(true)
DB.SetLogger(&GormLogger{})

// GormLogger struct
type GormLogger struct{}

// Print - Log Formatter
func (*GormLogger) Print(v ...interface{}) {
	switch v[0] {
	case "sql":
		log.Debug(
			"sql",
			zap.String("module", "gorm"),
			zap.String("type", "sql"),
			zap.Any("src", v[1]),
			zap.Any("duration", v[2]),
			zap.Any("sql", v[3]),
			zap.Any("values", v[4]),
			zap.Any("rows_returned", v[5]),
		)
	case "log":
		log.Debug("log", zap.Any("gorm", v[2]))
	}
}

相關鏈接:

https://www.soberkoder.com/go-gorm-logging/
https://learnku.com/docs/gorm/2018/logger/3805


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM