Как зарегистрировать SQL-запросы в Spring Boot?
Я хочу записывать 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
. В файле содержатся только базовые логи от Spring.
Что мне нужно сделать, чтобы увидеть SQL-запросы в лог-файле?
4 ответ(ов)
Попробуйте использовать следующие настройки в вашем файле свойств:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
Эти параметры позволят вам включить отладочный уровень логирования для SQL-запросов Hibernate, а также трассировку для связывания параметров SQL. Это поможет вам лучше понимать, что происходит при выполнении запросов к базе данных.
Для того чтобы включить логирование SQL-запросов и их параметров в приложении, использующем Spring и Hibernate, вам нужно настроить файл конфигурации приложения application.properties
(или application.yml
, если вы используете YAML). Добавьте следующие строки к вашему файлу конфигурации:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.jpa.show-sql=true
Вот что делает каждая из этих строчек:
logging.level.org.hibernate.SQL=DEBUG
– устанавливает уровень логирования для SQL-запросов на уровень DEBUG, что означает, что будут выводиться сами SQL-запросы, выполненные Hibernate.logging.level.org.hibernate.type=TRACE
– устанавливает уровень логирования для параметров запросов на уровень TRACE, что позволит видеть подробности о типах и значениях параметров, передаваемых в SQL.spring.jpa.show-sql=true
– включает отображение SQL-запросов в консоли, что полезно для отладки и анализа выполненных запросов.
После внесения этих изменений перезапустите ваше приложение, и вы сможете видеть информацию о SQL-запросах и их параметрах в логах.
Если у вас есть файл logback-spring.xml
или что-то подобное, добавьте следующий код в него:
<logger name="org.hibernate.SQL" level="trace" additivity="false">
<appender-ref ref="file" />
</logger>
Это работает для меня.
Чтобы также получать значения связанных переменных, добавьте следующий код:
<logger name="org.hibernate.type.descriptor.sql" level="trace">
<appender-ref ref="file" />
</logger>
Для Hibernate 6, чтобы включить вывод SQL-запросов и их параметров в логах, вам нужно добавить следующие настройки в ваш application.properties
:
spring.jpa.properties.hibernate.show_sql=true
logging.level.org.hibernate.orm.jdbc.bind=trace
Первая строка spring.jpa.properties.hibernate.show_sql=true
отвечает за отображение сгенерированных SQL-запросов в консоли. Вторая строка logging.level.org.hibernate.orm.jdbc.bind=trace
позволяет выводить информацию о привязке параметров к запросам, что может быть очень полезно для отладки. Убедитесь, что вы настроили уровень журналирования соответствующим образом, чтобы увидеть все необходимые детали.
Создание репозитория Spring без сущности
Возможные значения конфигурации hbm2ddl.auto в Hibernate и их назначение
Как исправить ошибку Hibernate "объект ссылается на несохраненный временный экземпляр - сохраните временный экземпляр перед сбросом"
Разница между @Inject и @Autowired в Spring Framework: когда и что использовать?
В чем разница между JPA и Hibernate? [закрыт]