2014-01-15 5 views
9

Ich habe vor kurzem zu Apache log4j2 gewechselt und kann immer noch keine Möglichkeit finden, die Hibernate-Protokollierung mit log4j2.xml zu konfigurieren.Konfigurieren der Ruhezustandsprotokollierung mit log4j2.xml?

Da ich keinen Weg finden kann, um dieses Problem zu umgehen, verwende ich noch log4j.properties-Datei explizit für den Ruhezustand. Dies ist nicht die beste Lösung, da meine log4j2.xml JPA-Appender verwendet (schreibt Protokolle in db). Ich möchte keine separate Logik für den Ruhezustand schreiben.

Gibt es eine Möglichkeit zum Konfigurieren der Ruhezustandsprotokollierung mit log4j2?

Antwort

0

Es ist möglich, Aufrufe der log4j-1.x-API an die log4j-2.0-Implementierung umzuleiten. In der FAQ about which jars wird erklärt, wie dies zu tun ist. Sie müssen wahrscheinlich das alte log4j-1.x-Jar aus dem Klassenpfad entfernen, wenn Sie dies tun.

+0

Ich folgte den Anweisungen in den FAQ, aber es hat nicht geholfen. Es muss noch etwas anderes erforderlich sein - wahrscheinlich diese Eigenschaftseinstellung. – Adam

5

vorgeschlagen Wie in https://issues.apache.org/jira/browse/LOG4J2-172 können Sie Systemeigenschaft hinzufügen Hibernate slf4j Gebrauch zu zwingen

-Dorg.jboss.logging.provider = slf4j

auch log4j-slf4j-impl sein sollte zu Klassenpfad hinzugefügt

Meine benutzerdefinierte Lösung: mit Spring können Sie platzieren org.jboss.logging.provider = slf4j in Eigenschaftendatei

(envConfigLocation ist url Datei)

<bean id="propertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"> 
    <property name="location" ref="envConfigLocation" /> 
    <property name="order" value="1"/> 
</bean> 
+0

Ich habe versucht, es funktioniert. – Stony

3

ich eine Antwort auf diese Frage zu finden: How to redirect all logs from hibernate and spring to log4j2?

Grundsätzlich mit Hibernate funktioniert log4j2 nicht funktionieren, so dass Sie log4j verwenden. Aber Sie verwenden immer noch Ihre log4j2-Konfiguration. Du brauchst die folgenden Abhängigkeiten und dann passiert die Magie im Hintergrund.

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-core</artifactId> 
    <version>2.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-1.2-api</artifactId> 
    <version>2.1</version> 
</dependency> 
<dependency> 
<!--HIBERNATE LOGGER (log4j)--> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.6</version> 
</dependency> 
Verwandte Themen