Ich konnte keine Dokumentation zum Konfigurieren der Protokollierung von Hibernate mithilfe der XML-Konfigurationsdatei für Log4j finden.
Ist dies überhaupt möglich oder habe ich eine Konfigurationsdatei im Eigenschaftenstil verwendet, um die Protokollierung von Hibernate zu steuern?
Wenn jemand Informationen oder Links zur Dokumentation hat, wäre er dankbar.
EDIT:
Zur Verdeutlichung suche ich nach einem Beispiel für die tatsächliche XML-Syntax zur Steuerung des Ruhezustands.
EDIT2: Folgendes habe
ich in meiner XML-Konfigurationsdatei.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="info"/>
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="Program-Name.log"/>
<param name="MaxFileSize" value="1000KB"/>
<!-- Keep one backup file -->
<param name="MaxBackupIndex" value="4"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
<appender-ref ref="rolling-file" />
</root>
</log4j:configuration>
Die Protokollierung funktioniert einwandfrei, aber ich suche nach einer Möglichkeit, die Protokollierung im Ruhezustand so zu steuern, dass sie von der Protokollierung auf Anwendungsebene getrennt ist, da sie derzeit meine Protokolle überflutet. Ich habe Beispiele für die Verwendung der Voreinstellungsdatei gefunden. Ich habe mich nur gefragt, wie ich dies in einer XML-Datei tun kann.
Antworten:
Von http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging
Hier ist die Liste der Logger-Kategorien:
Formatiert zum Einfügen in eine log4j XML-Konfigurationsdatei:
NB: Die meisten Logger verwenden die DEBUG-Ebene, jedoch verwendet org.hibernate.type TRACE. In früheren Versionen von Hibernate hat org.hibernate.type ebenfalls DEBUG verwendet. Ab Hibernate 3 müssen Sie die Ebene jedoch auf TRACE (oder ALL) setzen, damit die Protokollierung der JDBC-Parameterbindung angezeigt wird.
Und eine Kategorie wird als solche angegeben:
Es muss vor dem Stammelement stehen.
quelle
org.hibernate.engine.transaction
. Siehe: docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/…L
In zum Beispiel<Logger name="org.hibernate.SQL" level="debug" />
tatsächlich aktiviert werden? Ich erhalte beim Start einen Fehler in Tomcat, wenn ich das L: groß schreibe"The content of element type 'log4j:configuration' must match '(renderer*,throwableRenderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)'."
. Ich bin auch verwirrt darüber, wie dies tatsächlich in meine log4j.xml-Datei eingegeben werden soll. Sollte ich<logger>
für jede Kategorie einen eigenen Block mit den<level>
Tags haben oder kann ich mit den von Ihnen präsentierten Einzeilern davonkommen?Loki ‚s Antwort verweist auf die Hibernate 3 docs und bietet gute Informationen, aber ich war immer noch nicht immer die Ergebnisse , die ich erwartet hatte.
Viel Schlagen, Winken der Arme und allgemeine tote Mausläufe brachten mir schließlich meinen Käse.
Da Hibernate 3 Simple Logging Facade für Java (SLF4J) verwendet (gemäß den Dokumenten), benötigen Sie , wenn Sie sich auf Log4j 1.2 verlassen, auch die Datei slf4j-log4j12-1.5.10.jar, wenn Sie die Hibernate-Protokollierung vollständig konfigurieren möchten eine log4j-Konfigurationsdatei. Hoffe das hilft dem nächsten Kerl.
quelle
Als Antwort auf den Kommentar von homaxto habe ich dies gerade.
Der Schlüsselteil ist
Hoffe das hilft.
quelle
Folgendes verwende ich:
Offensichtlich möchte ich keine Hibernate-Nachrichten sehen;) - setze den Level auf "debug", um die Ausgabe zu erhalten.
quelle
Die Antworten waren nützlich. Nach der Änderung wurde die SQL-Anweisung doppelt protokolliert, eine in der Protokolldatei log4j und eine in der Standardkonsole. Ich habe die Datei persistence.xml in show_sql in false geändert, um die Protokollierung von der Standardkonsole zu entfernen. Das Beibehalten von format_sql true wirkt sich auch auf die log4j-Protokolldatei aus, daher habe ich das true beibehalten.
quelle
Sie können Ihre
log4j
Datei mit dem Kategorie-Tag wie folgt konfigurieren (mit einem Konsolen-Appender für das Beispiel):So wird jede Warnung, jeder Fehler oder jede schwerwiegende Meldung aus dem Ruhezustand angezeigt, nicht mehr. Außerdem befinden sich Ihr Code und Ihr Bibliothekscode auf Info-Ebene (also Info, Warnung, Fehler und schwerwiegend).
Um die Protokollstufe einer Bibliothek zu ändern, fügen Sie einfach eine Kategorie hinzu, z. B. zum desaktiven Frühlingsinformationsprotokoll:
Oder brechen Sie mit einem anderen Appender die Additivität (der Standardwert für die Additivität ist true).
Wenn Sie nicht möchten, dass das Ruhezustandsprotokoll bei jeder Abfrage protokolliert wird, setzen Sie die Eigenschaft
show_sql
für den Ruhezustand auffalse
.quelle