Wie bekomme ich mehr Debug-Meldungen von Hibernate?

8

Ich konnte trotz der Einstellung einiger Eigenschaften in der hibernate.cfg.xml -Datei keine Konsolenausgabe (um Debugging zu unterstützen) mehr aus Hibernate herausholen. Wenn Sie beispielsweise die Zeile <property name="show_sql">true</property> hinzufügen, werden in der Tat keine SQL-Anweisungen in der Konsole angezeigt.

Ich habe auch versucht, mit dem Inhalt der log4j.properties -Datei - wie Einstellung log4j.logger.org.hibernate=debug - ohne Glück herumzuspielen. Was vermisse ich?

Bearbeiten: Der Inhalt der Datei hibernate-service.xml ist

%Vor%

Ich bin mir nicht 100% sicher, ob das tatsächlich irgendeinen Effekt hat. Diese XML-Datei befindet sich im Eclipse-Projekt, das meine Datenbankdaten verarbeitet, scheint aber nicht im JBoss-Bereitstellungsverzeichnis enthalten zu sein.

Edit 2: Dies wird definitiv als HAR bereitgestellt. Das heißt, ich bin mir ziemlich sicher, dass ich hibernate.cfg.xml brauche - ich erinnere mich, Probleme zu haben, als ein Mapping-Dokument als Eintrag in dieser Datei ausgelassen wurde. Ich denke, die HAR wird mit Hilfe von ant generiert - in der Datei build.xml gibt es ein Ziel dafür:

%Vor%

Aber wenn ich das Ameisen-Build mit falsch formiertem xml in der Datei hibernate-service.xml mache, schlägt es nicht fehl. Aktualisieren Auch wenn Sie die Datei vollständig löschen, führt dies nicht dazu, dass ein Build fehlschlägt. Irgendwelche Ideen hier? Aktualisierung beenden

Es klingt so, als würde Hibernate SQL-Anweisungen ausgeben, sollte (wenn alles korrekt eingerichtet ist) sich darum kümmern - bedeutet das, dass die Einstellungen in log4j.properties hier keinen Unterschied machen? - weil das tatsächlich die Ausgabe beim Ausführen von ant ändert.

Bearbeiten 3: Nachdem ich mit meinen Daten har auf andere seltsame Probleme gestoßen bin, habe ich die har-Datei komplett gelöscht und sie mit dem Build-Ziel har am neu erstellt. Plötzlich funktioniert alles! Danke an das Schachspiel für seine großartige Hilfsbereitschaft. Kann nicht sagen, dass ich genau weiß, was es am Ende getan hat, aber ich würde eher seine Bemühungen anerkennen, als zu schreiben und meine eigene Antwort zu akzeptieren; Ich entschuldige mich, wenn Sie kein "er" sind.

    
Matt Ball 04.09.2009, 18:44
quelle

3 Antworten

10

Der korrekte Name der Eigenschaft lautet hibernate.show_sql und es funktioniert definitiv.

Stelle sicher, dass dein hibernate.cfg.xml der richtige ist und dass es abgeholt wird; Gleiches gilt für Ihre log4j.properties -Datei. Ich weiß, dass diese wie dumme Vorschläge erscheinen, aber sie machen 98% der "fehlenden Logging-Ausgaben" aus.

Aktualisieren : Ich werde die Antwort aktualisieren, anstatt weitere Kommentare hinzuzufügen. Sie müssen sicherstellen, dass Ihr hibernate-service.xml von JBoss übernommen wird. Der einfache Weg zu überprüfen ist, einen Syntaxfehler hinzuzufügen (wie eine schließende geschweifte Klammer auf einem Element wegzulassen) und zu sehen, ob JBoss während des Neustarts explodiert :-) Es sollte in har verpackt und als Teil Ihres Build-Prozesses bereitgestellt werden Wenn du also feststellst, dass nicht von JBoss abgeholt wird, solltest du genau hinschauen. Ich würde die widersprüchlichen Einstellungen in hibernate.cfg.xml loswerden (z. B. würde alles, was Sie angeben, als mbean-Attribute nicht in hibernate.cfg.xml repliziert werden). Brauchen Sie sogar hibernate.cfg.xml ? Wenn sie als HAR bereitgestellt werden, sollten Ihre Zuordnungen automatisch gescannt / abgeholt werden.

    
ChssPly76 04.09.2009, 18:51
quelle
6

Ich verwende einfach die Datei log4j.properties, um Hibernate-Anweisungen zu protokollieren. Für SQL-Anweisungen muss die Eigenschaft log4j.logger.org.hibernate.SQL auf debug und für SQL-Parameter / zurückgegebene Werte auf log4j.logger gesetzt werden Die Eigenschaft .org.hibernate.type muss auf trace festgelegt werden.

Hier ist die Datei log4j.properties, die ich verwende:

%Vor%     
jwaddell 08.09.2009 01:53
quelle
1

Stellen Sie sicher, dass Sie die richtige log4j-Konfiguration verwenden.

Wenn Sie in jboss laufen (Sie tun das, oder?), konfigurieren Sie log4j-logging in $JBOSS_HOME/server/<config>/conf/jboss-log4j.xml .

Es gibt zwei Standard-Appender; FILE schreibt nach log/server.log und CONSOLE nach stdout (manchmal umgeleitet log/console.log ). Passen Sie den Schwellenwert für den Appender an DEBUG in der Datei an oder setzen Sie die Systemproperty jboss.server.log.threshold (hängt davon ab, welche Version von jboss Sie verwenden).

Sie müssen außerdem die Protokollierungspriorität des Ruhezustands anpassen, indem Sie eine Kategorie hinzufügen:

%Vor%     
mafro 10.09.2009 12:00
quelle