Ein alternativer Ansatz Datei ist, einen Proxy-Treiber wie log4jdbc2 zu verwenden, der den Vorteil hat, das genaue SQL zu protokollieren, das mit den vorhandenen Parametern zur Datenbank geht, anders als die anderen Antworten. Dies funktioniert unabhängig von der Persistenz-Abstraktionsschicht (z. B. iBatis, JPA usw.).
https://code.google.com/archive/p/log4jdbc-log4j2/
Eine große Bequemlichkeit dafür ist, dass Sie die SQL direkt in Ihrem DB-Frontend kopieren und ausführen können, wie es ist.
1 Fügen Sie Maven Abhängigkeiten:
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
2 Add logback Konfiguration. Kopieren Sie die relevanten Teile Ihrer bestehenden logback.xml
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="jdbc.audit" level="ERROR" />
<logger name="jdbc.connection" level="ERROR" />
<logger name="jdbc.sqltiming" level="ERROR" />
<logger name="jdbc.resultset" level="ERROR" />
<!-- UNCOMMENT THE BELOW TO HIDE THE RESULT SET TABLE OUTPUT -->
<!--<logger name="jdbc.resultsettable" level="ERROR" /> -->
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
3 Tells log4jdbc2 über Ihre Logging-config:
Erstellen Sie eine Datei mit dem Namen log4jdbc.log4j2. Eigenschaften an der Wurzel des Klassenpfads src/test/resources oder src/main/resources in einem Maven-Projekt. Diese Datei hat eine Linie, die die unten:
log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
4 Ändern Sie Ihre DB-Treiberklasse und URL wie folgt:
spring.database.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#append log4jdbc after jdbc part of the URL: hsql example
spring.datasource.url=jdbc:log4jdbc:hsqldb:mem:db_name
Neben der Protokollierung von SQL werden auch die Ergebnisse aller ausgeführten Abfragen im Tabellenformat protokolliert. Dies kann gemäß dem Kommentar in der Beispielprotokollierungskonfiguration deaktiviert werden.
Beispielausgabe:
10:44:29.400 [main] DEBUG jdbc.sqlonly -
5. select memberrole0_.member_id as member_i2_12_0_, memberrole0_.id as id1_12_0_, memberrole0_.id
as id1_12_1_, memberrole0_.member_id as member_i2_12_1_, memberrole0_.role_id as role_id3_12_1_,
role1_.id as id1_17_2_, role1_.name as name2_17_2_ from member_roles memberrole0_ left outer
join roles role1_ on memberrole0_.role_id=role1_.id where memberrole0_.member_id=104
10:44:29.402 [main] INFO jdbc.resultsettable -
|----------|---|---|----------|--------|---|-----|
|member_id |id |id |member_id |role_id |id |name |
|----------|---|---|----------|--------|---|-----|
|----------|---|---|----------|--------|---|-----|
Dank you very much! –