web-dev-qa-db-fra.com

Comment consigner des instructions SQL dans Spring Boot?

Je souhaite consigner des instructions SQL dans un fichier.
J'ai les propriétés suivantes dans 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

Quand je lance mon application

cmd>mvn spring-boot:run

Je peux voir des instructions SQL dans la console, mais elles n'apparaissent pas dans un fichier app.log. Le fichier ne contient que les journaux de base du printemps.

Que dois-je faire pour voir les instructions SQL dans le fichier journal?

271
Oleg Pavliv

essayez d'utiliser ceci dans votre fichier de propriétés:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
385
Paul Woods

Cela fonctionne aussi pour stdout:

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true

Pour enregistrer les valeurs:

spring.jpa.properties.hibernate.type=trace 

Ajoutez simplement ceci à application.properties.

164
v.ladynev

Cela fonctionne pour moi (YAML):

spring:
  jpa:
    properties:
      hibernate:
        show_sql: true
        format_sql: true
logging:
  level:
    org:
      hibernate:
        type: trace
78
Michel

Veuillez utiliser:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.jpa.show-sql=true
15
rahulnikhare

si vous avez un logback-spring.xml ou quelque chose comme ça, ajoutez-y le code suivant

<logger name="org.hibernate.SQL" level="trace" additivity="false">
    <appender-ref ref="file" />
</logger>

travaille pour moi.

Pour obtenir également des variables de liaison:

<logger name="org.hibernate.type.descriptor.sql" level="trace">
    <appender-ref ref="file" />
</logger>
13
Edye Chan

Pour le pilote de serveur MS-SQL (pilote JDBC Microsoft SQL Server).

essayez d'utiliser:

logging.level.com.Microsoft.sqlserver.jdbc=debug

dans votre fichier application.properties.

Ma préférence personnelle est de définir:

logging.level.com.Microsoft.sqlserver.jdbc=info
logging.level.com.Microsoft.sqlserver.jdbc.internals=debug

Vous pouvez regarder ces liens pour référence:

8
Javier Z.

Selon documentation c'est:

spring.jpa.show-sql=true # Enable logging of SQL statements.
7
Max Farsikov

Si vous voulez voir les paramètres réels utilisés pour interroger, vous pouvez utiliser

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql=TRACE

Notez ensuite que la valeur réelle du paramètre est indiquée par binding parameter......

   2018-08-07 14:14:36.079 DEBUG 44804 --- [           main] org.hibernate.SQL                        : select employee0_.id as id1_0_, employee0_.department as departme2_0_, employee0_.joining_date as joining_3_0_, employee0_.name as name4_0_ from employee employee0_ where employee0_.joining_date=?
    2018-08-07 14:14:36.079 TRACE 44804 --- [           main] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [TIMESTAMP] - [Tue Aug 07 00:00:00 SGT 2018]
3
Udara S.S Liyanage

Traduit réponse acceptée à YAML fonctionne pour moi

logging:
  level:
    org:
      hibernate:
        SQL:
          TRACE
        type:
          descriptor:
            sql:
              BasicBinder:
                TRACE
3
Robert.Li

Nous pouvons utiliser n'importe lequel de ceux-ci dans le fichier application.properties:

spring.jpa.show-sql=true 

example :
//Hibernate: select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_

ou

logging.level.org.hibernate.SQL=debug 

example :
2018-11-23 12:28:02.990 DEBUG 12972 --- [nio-8086-exec-2] org.hibernate.SQL   : select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_
3
Lova Chittumuri