Frage

Ich habe nicht in der Lage gewesen, eine Dokumentation zu finden, wie Hibernate Protokollierung unter Verwendung der XML-Stylekonfigurationsdatei für Log4j konfigurieren.

Ist dies überhaupt möglich oder habe ich eine Datei Eigenschaften Stil Konfiguration verwenden Hibernate Protokollierung zu kontrollieren?

Wenn jemand irgendwelche Informationen oder Links zur Dokumentation wäre es sehr geschätzt.

EDIT:
Nur um zu klären, ich für ein Beispiel der aktuellen XML-Syntax Suche Hibernate zu steuern.

EDIT2:
Hier ist, was ich in meiner XML-Konfigurationsdatei habe.

<?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>

Protokollierung funktioniert gut, aber ich nach einem Weg suche nach unten zu treten und der Hibernate-Protokollierung in Art und Weise zu steuern, die von meiner Anwendungsebene Protokollierung trennen, da es zur Zeit meiner Protokolle ist überfluten. Ich habe Beispiele für die Verwendung der Voreinstellungsdatei gefunden, dies zu tun, ich habe mich nur gefragt, wie ich dies in einer XML-Datei tun.

War es hilfreich?

Lösung

http: / /docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging

Hier ist die Liste der Logger Kategorien:

Category                    Function

org.hibernate.SQL           Log all SQL DML statements as they are executed
org.hibernate.type          Log all JDBC parameters
org.hibernate.tool.hbm2ddl  Log all SQL DDL statements as they are executed
org.hibernate.pretty        Log the state of all entities (max 20 entities) associated with the session at flush time
org.hibernate.cache         Log all second-level cache activity
org.hibernate.transaction   Log transaction related activity
org.hibernate.jdbc          Log all JDBC resource acquisition
org.hibernate.hql.ast.AST   Log HQL and SQL ASTs during query parsing
org.hibernate.secure        Log all JAAS authorization requests
org.hibernate               Log everything (a lot of information, but very useful for troubleshooting) 

Formatiere für das Einfügen in eine log4j XML-Konfigurationsdatei:

<!-- Log all SQL DML statements as they are executed -->
<Logger name="org.hibernate.SQL" level="debug" />
<!-- Log all JDBC parameters -->
<Logger name="org.hibernate.type" level="debug" />
<!-- Log all SQL DDL statements as they are executed -->
<Logger name="org.hibernate.tool.hbm2ddl" level="debug" />
<!-- Log the state of all entities (max 20 entities) associated with the session at flush time -->
<Logger name="org.hibernate.pretty" level="debug" />
<!-- Log all second-level cache activity -->
<Logger name="org.hibernate.cache" level="debug" />
<!-- Log transaction related activity -->
<Logger name="org.hibernate.transaction" level="debug" />
<!-- Log all JDBC resource acquisition -->
<Logger name="org.hibernate.jdbc" level="debug" />
<!-- Log HQL and SQL ASTs during query parsing -->
<Logger name="org.hibernate.hql.ast.AST" level="debug" />
<!-- Log all JAAS authorization requests -->
<Logger name="org.hibernate.secure" level="debug" />
<!-- Log everything (a lot of information, but very useful for troubleshooting) -->
<Logger name="org.hibernate" level="debug" />

NB: Die meisten der Logger die Debug-Ebene verwenden, jedoch org.hibernate.type verwendet TRACE. In früheren Versionen von Hibernate org.hibernate.type auch 3 DEBUG, sondern als von Hibernate verwendet man den Level TRACE (oder ALL) setzen muß, damit die JDBC-Parameterbindung Protokollierung zu sehen.

Und eine Kategorie als solche angegeben:

<logger name="org.hibernate">
    <level value="ALL" />
    <appender-ref ref="FILE"/>
</logger>

Es muss vor dem Wurzelelement platziert werden.

Andere Tipps

Loki 's verweist auf die Hibernate 3 docs beantworten und gute Informationen liefert, aber ich war immer noch nicht die Ergebnisse, ich erwartet hatte.

Viel Dreschen, winken von Waffen und allgemeine tote Maus läuft schließlich landete ich meinen Käse.

Da Hibernate 3 wird unter Verwendung von Einfache Protokollierung Fassade für Java (SLF4J) (pro Docs), < strong>, wenn Sie auf Log4j 1.2 setzen Sie auch müssen die slf4j-log4j12-1.5.10.jar , wenn Sie auf voll konfigurieren Hibernate mit log4j Konfigurationsdatei protokolliert. Hoffe, dass dies den nächsten Kerl hilft.

Als Reaktion auf homaxto Kommentar, das ist, was ich jetzt habe.

<?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="debug"/>
        <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="500KB"/>
        <param name="MaxBackupIndex" value="4"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
        </layout>
    </appender>

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

    <root>
        <priority value ="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling-file" />
    </root>
</log4j:configuration>

Der wichtigste Teil ist

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

Hope, das hilft.

Hier ist, was ich benutze:

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

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

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

<root>
    <priority value="info"/>
    <appender-ref ref="C1"/>
</root> 

Natürlich, ich weiß nicht, wie Hibernate Nachrichten zu sehen.;) - stellen Sie den Pegel auf „debug“, um die Ausgabe zu erhalten

Die Antworten waren nützlich. Nach dem Wechsel habe ich doppelte Protokollierung von SQL-Anweisungen, ein in der log4j Log-Datei und einem auf der Standard-Konsole. Ich habe die Datei persistence.xml show_sql zu falsch zu sagen, der von der Standard-Konsole anmelden loszuwerden. Keeping format_sql wahr hat auch Auswirkungen auf die log4j Log-Datei, so hielt ich das wahr.

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
        version="2.0">
    <persistence-unit name="myUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:d:\temp\database\cap1000;shutdown=true"></property>
            <property name="dialect" value="org.hibernate.dialect.HSQLDialect"/>
            <property name="hibernate.show_sql" value="false"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.connection.username" value="sa"/>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>

Sie können Ihre log4j Datei mit dem Kategorie-Tag wie folgt (mit einer Konsole Appender für das Beispiel) konfigurieren

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss} %p %c - %m%n" />
    </layout>
</appender>
<category name="org.hibernate">
    <priority value="WARN" />
</category>
<root>
    <priority value="INFO" />
    <appender-ref ref="console" />
</root>

So jede Warnung, Fehler oder fatale Nachricht aus dem Ruhezustand wird angezeigt, nicht mehr. Auch Ihr Code und Code-Bibliothek wird in Info-Ebene sein (so info, warn, Fehler und tödlich)

Um die Protokollebene einer Bibliothek zu ändern, fügen Sie einfach eine Kategorie, beispielsweise Feder info Protokoll desactive:

<category name="org.springframework">
    <priority value="WARN" />
</category>

oder mit einem anderen appender, bricht die Additivität (additivity Standardwert ist true)

<category name="org.springframework" additivity="false">
    <priority value="WARN" />
    <appender-ref ref="anotherAppender" />
</category>

Und wenn Sie nicht wollen winter jede Abfrage einzuloggen, stellen Sie die Hibernate-Eigenschaft show_sql false.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top