В Spring Boot логирование обычно управляется через фреймворк логирования Logback, который является реализацией SLF4J. Hibernate использует JBoss logging в качестве своего внутреннего логгера, но он может легко интегрироваться со SLF4J.
Чтобы настроить логирование Hibernate в файл через Logback в Spring Boot, вам потребуется выполнить несколько шагов:
**1. Убедитесь, что у вас есть соответствующие зависимости в вашем `pom.xml` (если вы используете Maven) или `build.gradle` (если вы используете Gradle):**
Для Maven:
```xml
<!-- Логгер SLF4J -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
```
Для Gradle:
```gradle
// Логгер SLF4J
implementation 'org.slf4j:slf4j-api'
implementation 'org.springframework.boot:spring-boot-starter-logging'
```
**2. Создайте или отредактируйте конфигурационный файл Logback `logback-spring.xml` в директории `src/main/resources` вашего приложения.** Если файла нет, создайте его со следующим содержимым:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Укажите путь к файлу логов -->
<property name="LOG_FILE" value="logs/myapp.log"/>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
</rollingPolicy>
</appender>
<!-- Логирование SQL запросов Hibernate -->
<logger name="org.hibernate.SQL" level="DEBUG">
<appender-ref ref="FILE"/>
</logger>
<!-- Логирование значений параметров SQL запросов -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE">
<appender-ref ref="FILE"/>
</logger>
<!-- Основной логгер Spring Boot -->
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
```
**3. Настройте уровни логирования в файле `application.properties` или `application.yml`.**
Для `application.properties`:
```properties
# Включение показа SQL запросов
spring.jpa.show-sql=true
# Настройка логирования Hibernate
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
```
Для `application.yml`:
```yaml
spring:
jpa:
show-sql: true
logging:
level:
org:
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
```
Также обратите внимание, что уровень логирования BASICBINDER выставлен как TRACE, это позволит логировать реальные значения параметров SQL запроса, которые могут быть полезны для отладки, но следует быть осторожным с данным уровнем логирования в продакшене по соображениям безопасности.
Теперь Hibernate будет логировать SQL запросы и значения параметров в файл `logs/myapp.log` (или в любой путь, который вы указали) со схемой ротации файлов лога.
Убедитесь, что путь к файлу логов, который вы указали в примере (`logs/myapp.log`), с