Dieses Blog durchsuchen

Freitag, 25. Januar 2013

Hibernate SQL-Statements loggen

Kürzlich hat mich ein Kollege auf eine sehr schöne Möglichkeit hingewiesen SQL-Statements, die von Hibernate erstellt werden, vernünftig lesbar (und damit direkt gegen eine Datenbank ausführbar) zu loggen.

Zwar kannte ich die Möglichkeit, über die üblichen Logging-Einstellungen

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

<logger name="org.hibernate.type">
    <level value="debug"/>
</logger>
 
Statements sichtbar zu machen. Allerdings wurden die Query Parameter mit Fragezeichen versehen und anschließend separat aufgelistet. Möchte man die Statements vollständig und gut lesbar loggen, sind drei Schritte durchzuführen:

  • In der log4j.xml folgende Einstellung vornehmen: 
<logger name="jdbc.sqltiming">
    <level value="INFO" />
</logger>
  • Die Datenquelle anpassen (z. B. im JBoss im "deploy"-Verzeichnis)
<connection-url>jdbc:log4jdbc:oracle:thin:@localhost:1521:XE</connection-url> <driver-class>net.sf.log4jdbc.DriverSpy</driver-class>
  • Den Proxy-Treiber log4jdbc4-1.2.jar ins lib-Verzeichnis des Applikations-Servers (oder der Anwendung) kopieren
Dieser lässt sich über folgenden Link beziehen: http://log4jdbc.googlecode.com/files/log4jdbc4-1.2.jar

Und schon werden wunderbar lesbare SQL-Statements rausgeloggt. Dies ist ein Feature, das ich schon viele Jahre gesucht habe und meiner Meinung nach sehr nützlich sein kann.

1 Kommentar: