web-dev-qa-db-fra.com

golang gorm Accéder à la requête mysql sous-jacente

Existe-t-il un moyen d’obtenir le journal de requête SQL à partir de https://github.com/jinzhu/gorm ?

par exemple. dans un environnement dev, il serait utile de pouvoir connecter à la console les requêtes mysql qui ont été appelées.

par exemple. comment obtenir le journal de requête SQL sous-jacent pour les requêtes suivantes:

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

Je suis conscient que je peux appeler:

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

mais je voudrais appeler seulement Debug() si dans l'environnement de dev et pas dans la production

19
Gravy

Ça fera l'affaire:

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

Vous pouvez passer votre propre enregistreur à gorm en utilisant la méthode gorm.SetLogger. Il utilise la méthode Print du logger pour imprimer les journaux ainsi que les requêtes SQL. Le niveau de journalisation de la méthode Print pour tout enregistreur (inbuild logger de logrus/go) est généralement défini sur INFO. Lors du transfert de l'enregistreur à gorm, si vous définissez le niveau de consignation sur une valeur inférieure ou égale à INFO (DEBUG/INFO), vous pouvez afficher les requêtes SQL et les autres journaux par gorm

Vous pouvez également analyser le niveau de journalisation à partir d'un fichier de configuration dans lequel vous pouvez le définir en fonction de l'environnement.

1
Drunk_Debugger