Como esta es una pregunta muy común, escribí
este artículo , en el que se basa esta respuesta.
Configuraciones para evitar
No debe usar esta configuración:
spring.jpa.show-sql=true
El problema show-sqles que las instrucciones SQL se imprimen en la consola, por lo que no hay forma de filtrarlas, como lo haría normalmente con un marco de registro.
Usar el registro de Hibernate
En su archivo de configuración de registro, si agrega el siguiente registrador:
<logger name="org.hibernate.SQL" level="debug"/>
Luego, Hibernate imprimirá las declaraciones SQL cuando PreparedStatementse cree el JDBC . Es por eso que la declaración se registrará utilizando marcadores de posición de parámetros:
INSERT INTO post (title, version, id) VALUES (?, ?, ?)
Si desea registrar los valores de los parámetros de enlace, simplemente agregue también el siguiente registrador:
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace"/>
Una vez que configure el BasicBinderregistrador, verá que los valores de los parámetros de enlace también se registran:
DEBUG [main]: o.h.SQL - insert into post (title, version, id) values (?, ?, ?)
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [1] as [VARCHAR] - [High-Performance Java Persistence, part 1]
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [2] as [INTEGER] - [0]
TRACE [main]: o.h.t.d.s.BasicBinder - binding parameter [3] as [BIGINT] - [1]
Usar datasource-proxy
El proxy de origen de datos le permite proxy el JDBC real DataSource, como se ilustra en el siguiente diagrama:

Puede definir el dataSourcebean que utilizará Hibernate de la siguiente manera:
@Bean
public DataSource dataSource(DataSource actualDataSource) {
SLF4JQueryLoggingListener loggingListener = new SLF4JQueryLoggingListener();
loggingListener.setQueryLogEntryCreator(new InlineQueryLogEntryCreator());
return ProxyDataSourceBuilder
.create(actualDataSource)
.name(DATA_SOURCE_PROXY_NAME)
.listener(loggingListener)
.build();
}
Tenga en cuenta que actualDataSourcedebe ser el DataSourcedefinido por el grupo de conexiones que está utilizando en su aplicación.
Una vez que habilite datasource-proxy, la instrucción SQl se registrará de la siguiente manera:
Name:DATA_SOURCE_PROXY, Time:6, Success:True,
Type:Prepared, Batch:True, QuerySize:1, BatchSize:3,
Query:["insert into post (title, version, id) values (?, ?, ?)"],
Params:[(Post no. 0, 0, 0), (Post no. 1, 0, 1), (Post no. 2, 0, 2)]
logging.level.org.hibernate.type=TRACE