Я хочу записывать операторы SQL в файл.
У меня есть следующие свойства вapplication.properties
spring.datasource.url=...
spring.datasource.username=user
spring.datasource.password=1234
spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
security.ignored=true
security.basic.enabled=false
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=INFO
logging.file=c:/temp/my-log/app.log
Когда я запускаю свое приложение
cmd>mvn spring-boot:run
Я вижу операторы sql в консоли, но они не отображаются в файле app.log. Файл содержит только основные журналы от весны.
Что я должен сделать, чтобы увидеть операторы SQL в файле журнала?
logging.level.org.hibernate.type=TRACE
Это работает и для stdout:
Для регистрации значений:
Просто добавьте это к
application.properties
.источник
spring.jpa.properties.hibernate.type=trace
?
вместо параметров. Это решение должно было показать их мне?Это работает для меня (YAML):
источник
Пожалуйста, используйте:
источник
logging.level.org.hibernate.SQL=DEBUG
заставил это работать для меня и отсутствовал для других ответов. Спасибо!если у вас есть logback-spring.xml или что-то в этом роде, добавьте в него следующий код
работает для меня.
Чтобы также получить переменные связывания:
источник
<appender-ref ref="FILE" />
Настройки, чтобы избежать
Вы не должны использовать этот параметр:
Проблема
show-sql
в том, что операторы SQL печатаются в консоли, поэтому нет способа их фильтровать, как вы это обычно делаете с каркасом Logging.Использование журнала Hibernate
В вашем файле конфигурации журнала, если вы добавите следующий регистратор:
Затем Hibernate напечатает операторы SQL при создании JDBC
PreparedStatement
. Вот почему оператор будет записываться с использованием заполнителей параметров:Если вы хотите записать значения параметров связывания, просто добавьте также следующий регистратор:
Установив
BasicBinder
регистратор, вы увидите, что значения параметров привязки также регистрируются:Использование datasource-proxy
DataSource-прокси позволяет прокси фактической JDBC
DataSource
, как показано на следующей схеме:Вы можете определить
dataSource
bean-компонент, который будет использоваться Hibernate, следующим образом:Обратите внимание, что он
actualDataSource
долженDataSource
определяться пулом соединений, который вы используете в своем приложении.Как только вы включите
datasource-proxy
, оператор SQl будет зарегистрирован следующим образом:источник
Для драйвера сервера MS-SQL (Драйвер JDBC для Microsoft SQL Server).
попробуйте использовать:
в вашем файле application.properties.
Мое личное предпочтение - установить:
Вы можете посмотреть на эти ссылки для справки:
источник
Согласно документации это:
источник
Перевод принятого ответа на YAML у меня работает
источник
logging.level.org.hibernate.SQL: TRACE
logging.level.org.hibernate.type.descriptor.sql.BasicBinder: TRACE
Мы можем использовать любой из них в файле application.properties :
или
источник
Если вы хотите просмотреть фактические параметры, используемые для запроса, вы можете использовать
Затем обратите внимание, что фактическое значение параметра отображается как
binding parameter......
источник
Войти в стандартный вывод
добавить в
application.properties
Это самый простой способ распечатать запросы SQL, хотя он не регистрирует параметры подготовленных операторов. И его не рекомендуется, так как он не такой, как оптимизированный каркас регистрации.
Использование Logging Framework
добавить в
application.properties
При указании указанных выше свойств записи журналов будут отправлены настроенному приложению журналов, например, log-back или log4j.
источник
Если у вас возникли проблемы с этим параметром, и кажется, что он работает иногда, а не в других случаях, подумайте, не находятся ли моменты, когда он не работает, во время модульных тестов.
Многие люди объявляют пользовательские свойства времени тестирования с помощью
@TestPropertySources
аннотации, объявленной где-то в вашей иерархии наследования тестов. Это переопределит все, что вы указали в своихapplication.properties
или других настройках производственных свойств, поэтому эти значения будут игнорироваться во время тестирования.источник
Ввод
spring.jpa.properties.hibernate.show_sql=true
в application.properties не всегда помогало.Вы можете попытаться добавить
properties.put("hibernate.show_sql", "true");
в свойства конфигурации базы данных.источник
Вам просто нужно установить
источник