Ich möchte SQL-Anweisungen in einer Datei protokollieren.
Ich habe die folgenden Eigenschaften in 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
Wenn ich meine Anwendung starte
cmd>mvn spring-boot:run
Ich kann SQL-Anweisungen in der Konsole sehen, aber sie erscheinen nicht in einer Datei app.log. Die Datei enthält nur grundlegende Protokolle aus dem Frühjahr.
Was kann ich tun, um SQL-Anweisungen in der Protokolldatei anzuzeigen?
versuchen Sie dies in Ihrer Eigenschaftendatei zu verwenden:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
Dies funktioniert auch für stdout:
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
So protokollieren Sie Werte:
spring.jpa.properties.hibernate.type=trace
Fügen Sie dies einfach zu application.properties
hinzu.
Das funktioniert bei mir (YAML):
spring:
jpa:
properties:
hibernate:
show_sql: true
format_sql: true
logging:
level:
org:
hibernate:
type: trace
Bitte verwende:
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
spring.jpa.show-sql=true
wenn Sie eine logback-spring.xml oder ähnliches haben, fügen Sie den folgenden Code hinzu
<logger name="org.hibernate.SQL" level="trace" additivity="false">
<appender-ref ref="file" />
</logger>
funktioniert bei mir.
So erhalten Sie auch Bindevariablen:
<logger name="org.hibernate.type.descriptor.sql" level="trace">
<appender-ref ref="file" />
</logger>
Für den MS-SQL Server-Treiber (Microsoft SQL Server JDBC-Treiber).
versuche es mit:
logging.level.com.Microsoft.sqlserver.jdbc=debug
in Ihrer application.properties-Datei.
Meine persönlichen Vorlieben sind:
logging.level.com.Microsoft.sqlserver.jdbc=info
logging.level.com.Microsoft.sqlserver.jdbc.internals=debug
Sie können diese Links als Referenz ansehen:
Nach Dokumentation ist es:
spring.jpa.show-sql=true # Enable logging of SQL statements.
Wenn Sie die zur Abfrage verwendeten tatsächlichen Parameter anzeigen möchten, können Sie sie verwenden
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql=TRACE
Beachten Sie dann, dass der aktuelle Parameterwert als binding parameter......
angezeigt wird.
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]
Die übersetzte akzeptierte Antwort auf YAML funktioniert für mich
logging:
level:
org:
hibernate:
SQL:
TRACE
type:
descriptor:
sql:
BasicBinder:
TRACE
In der Datei application.properties können Sie eine der folgenden Angaben verwenden:
spring.jpa.show-sql=true
example :
//Hibernate: select country0_.id as id1_0_, country0_.name as name2_0_ from country country0_
oder
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_