若要在專案中,顯示gorm.Debug() 相關的sql 資訊以利偵錯使用,可以搭配logrus 

type GormLogger struct{}

// Print handles log events from Gorm for the custom logger.
func (*GormLogger) Print(v ...interface{}) {
    switch v[0] {
    case "sql":
        log.WithFields(
            log.Fields{
                "module":  "gorm",
                "type":    "sql",
                "rows":    v[5],
                "src_ref": v[1],
                "values":  v[4],
            },
        ).Debug(v[3])
    case "log":
        log.WithFields(log.Fields{"module": "gorm", "type": "log"}).Print(v[2])
    }
}

var SqlDB *gorm.DB

func InitDB() {
    SqlDB, err = gorm.Open("mysql", dbLink)
    if err != nil {
        log.Fatal(err.Error())
    }
    err = SqlDB.DB().Ping()
    if err != nil {
        log.Fatal(err.Error())
    }

    SqlDB.SetLogger(&GormLogger{})
    SqlDB.LogMode(true)
}

arrow
arrow
    文章標籤
    go golang logrus gorm
    全站熱搜

    狼翔月影 發表在 痞客邦 留言(0) 人氣()