Log des requêtes Hibernate

Hibernate / JPA

Pour activer l’affichage des requêtes SQL générées par Hibernate, on connait le classique show_sql, qui peut être configurée dans le fichier persistence.xml.

<property name="hibernate.show_sql">true</property>

Cette option est pratique, mais a quelques défauts importants :

  • Les requêtes sont affichées dans la sortie standard, ce serait mieux de les avoir dans les logs configurés.

  • Il manque la valeur des paramètres passés.

  • Les requêtes sont peu lisibles car sur une ligne.

Pour envoyer les logs dans Log4J ou Logback, il faut désactiver l’option show_sql et activer le logger org.hibernate.SQL en debug.

 <logger name="org.hibernate.SQL" level="DEBUG" />

Les informations sur les paramètres sont envoyées dans le logger org.hibernate.type, au niveau trace.

 <logger name="org.hibernate.type" level="TRACE"/>

Ce logger concerne aussi les valeurs récupérées des requêtes.

Enfin, pour une meilleure mise en forme des requêtes, il faut activer l’option format_sql. Ceci fonctionne avec l’option show_sql ou le logger org.hibernate.SQL.

 <property name="hibernate.format_sql">true</property>

Hibernate avec Spring Boot

Lorsqu’on utilise Hibernate avec Spring Boot, la configuration est centralisée dans le fichier application.properties, ou son équivalent YAML.

spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

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