golang gorm Доступ к базовому запросу mysql

Есть ли способ получить журнал запросов sql из https://github.com/jinzhu/gorm?

например в среде разработки было бы полезно иметь возможность записывать в консоль вызванные запросы mysql.

например как получить базовый журнал запросов sql для следующих запросов:

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

Я знаю, что могу позвонить:

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

но я хотел бы вызвать Debug() только если в среде разработки, а не в производстве


person Gravy    schedule 29.03.2016    source источник


Ответы (3)


Это поможет:

db, err:= Open(dbType, connectionDSN);
db.LogMode(true)
person Ronna    schedule 29.03.2016

В новой версии (GORM v2) используйте интерфейс Logger:

db, err := gorm.Open(mysql.Open(connectionDSN), &gorm.Config{
    Logger: logger.Default.LogMode(logger.Info),
})

Для старой версии (GORM v1):

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

Примечание: это не относится к MySQL и будет работать с любым другим драйвером БД (например, Postgres, SQLite и т. Д.).

person rustyx    schedule 25.02.2021

Вы можете передать свой собственный регистратор в gorm с помощью метода gorm.SetLogger. Он использует метод Print регистратора для печати журналов, а также SQL-запросов. Уровень журнала метода печати для любого регистратора (встроенного регистратора logrus / go) обычно установлен на INFO. При передаче регистратора в gorm, если вы установите уровень журнала на что-либо ниже или равное INFO (DEBUG / INFO), вы можете видеть запросы sql и другие журналы по gorm

Также вы можете проанализировать уровень журнала из файла конфигурации, где вы можете установить его в зависимости от среды.

person Drunk_Debugger    schedule 29.03.2016