wake-up-neo.net

golang Gorm Greifen Sie auf die zugrunde liegende MySQL-Abfrage zu

Gibt es eine Möglichkeit, das SQL-Abfrageprotokoll von https://github.com/jinzhu/gorm abzurufen?

z.B. In der dev-Umgebung wäre es nützlich, die aufgerufenen Mysql-Abfragen an der Konsole anmelden zu können.

z.B. So erhalten Sie das zugrunde liegende SQL-Abfrageprotokoll für die folgenden Abfragen:

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

Mir ist bewusst, dass ich anrufen kann:

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

aber ich möchte Debug() nur anrufen, wenn sie in der entwicklungsumgebung und nicht in der produktion sind

19
Gravy

Das wird den Trick tun:

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

Sie können Ihren eigenen Logger mithilfe der Methode gorm.SetLogger an gorm übergeben. Es verwendet die Print-Methode des Loggers, um Protokolle sowie SQL-Abfragen zu drucken. Die Protokollebene der Print-Methode für jeden Logger (Inlog-Logger von logrus/go) ist im Allgemeinen auf INFO gesetzt. Wenn Sie den Logger an gorm übergeben, wenn Sie den Log-Level auf etwas unterhalb oder gleich INFO (DEBUG/INFO) setzen, können Sie die SQL-Abfragen und andere Protokolle nach gorm anzeigen

Sie können auch die Protokollebene aus einer Konfigurationsdatei parsen, in der Sie sie basierend auf der Umgebung einstellen können

1
Drunk_Debugger