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?
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
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
.
Cela fonctionne pour moi (YAML):
spring:
jpa:
properties:
hibernate:
show_sql: true
format_sql: true
logging:
level:
org:
hibernate:
type: trace
Veuillez utiliser:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.jpa.show-sql=true
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>
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:
Selon documentation c'est:
spring.jpa.show-sql=true # Enable logging of SQL statements.
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]
Traduit réponse acceptée à YAML fonctionne pour moi
logging:
level:
org:
hibernate:
SQL:
TRACE
type:
descriptor:
sql:
BasicBinder:
TRACE
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_