web-dev-qa-db-ja.com

golang gorm基になるmysqlクエリにアクセスする

https://github.com/jinzhu/gorm からSQLクエリログを取得する方法はありますか?

例えば開発環境では、呼び出されたmysqlクエリをコンソールに記録できると便利です。

例えば次のクエリの基になるSQLクエリログを取得する方法:

_gorm.Find(&todos)
gorm.Preload("User").Find(&todos)
_

私が電話できることを知っています:

_gorm.Debug().Find(&todos)
gorm.Debug().Preload("User").Find(&todos)
_

しかし、本番環境ではなく開発環境の場合にのみDebug()を呼び出したい

27
Gravy

これはトリックを行います:

db, err:= Open(dbType, connectionDSN);
db.LogMode(true)
43
Ronna

Gorm.SetLoggerメソッドを使用して、独自のロガーをgormに渡すことができます。ロガーのPrintメソッドを使用して、SQLクエリだけでなくログも印刷します。ロガー(logrus/goのinbuildロガー)のPrintメソッドのログレベルは、通常、INFOに設定されます。ログをgormに渡す際に、ログレベルをINFO(DEBUG/INFO)以下に設定すると、SQLクエリと他のログをgormで確認できます

また、環境に基づいて設定できる構成ファイルからログレベルを解析できます

1
Drunk_Debugger