Если у вас установлен плагин console , вы можете получить запись в sql с помощью этого небольшого фрагмента кода.
// grails 2.3
def logger=ctx.sessionFactory.settings.sqlStatementLogger
// grails 3.3
def logger = ctx.sessionFactory.currentSession.jdbcCoordinator.statementPreparer.jdbcService.sqlStatementLogger
logger.logToStdout=true
try {
<code that will log sql queries>
}
finally {
logToStdout = false
}
Это разновидность многих из приведенных выше решений, но она позволяет настроить значение во время выполнения. И, как и другие решения, которые имеют дело с logToStdout
, он показывает только запросы, а не значения привязки.
Идея была украдена из поста Бертбека с постом, который я прочитал несколько лет назад и который сейчас не могу найти. Отредактировано для работы с граалями 3.3.
Аналогичная методика может использоваться для включения ведения журнала для конкретных интеграционных тестов:
class SomeIntegrationSpec extends IntegrationSpec {
def sessionFactory
def setup() {
sessionFactory.settings.sqlStatementLogger.logToStdout = true
}
def cleanup() {
sessionFactory.settings.sqlStatementLogger.logToStdout = false
}
void "some test"() {
...
}
Это включит ведение журнала sql только для тестов в этом одном файле.