Hibernate + Log4j

Status
Nicht offen für weitere Antworten.

Chtonian

Mitglied
Guten Tag, ich habe eine Frage zu Hibernate, JPA, Log4j und Jboss 4.2.3 GA

Wir haben das Problem, dass die Ausgaben von Hibernate nicht über Log4j ausgegeben werden, sondern über STDERR in der Konsole / Logfile von JBoss landen.

Die Ausgabe von Hibernate sieht so aus:

Code:
12:01:33,836 ERROR [STDERR] 26.06.2009 12:01:33 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SCHWERWIEGEND: Table 't_word' already exists

12:01:22,759 ERROR [STDERR] 26.06.2009 12:01:22 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.4.0.GA


Die Log4J Config XML im %JBOSS_HOME%/server/default/conf Ordner sieht so aus:

[XML]
<appender name="HIBERNATE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="TRACE"/>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<category name="org.hibernate">
<priority value="TRACE"/>
<appender-ref ref="HIBERNATE"/>
</category>

<category name="org.hibernate.util.JDBCExceptionReporter">
<priority value="FATAL"/>
<appender-ref ref="HIBERNATE"/>
</category>

<category name="org.hibernate.hql.ast.QueryTranslatorImpl">
<priority value="ERROR"/>
<appender-ref ref="HIBERNATE"/>
</category>
[/XML]

Anscheinend ignoriert Hibernate / JPA diese Konfiguration, denn für alle anderen eigenen Logger funktioniert diese Konfigurations datei.

Gibt es eine Möglichkeit, Log4j für Hibernate zu aktivieren, oder ist es ein generelles JBoss Problem ?
 

Fenixx

Aktives Mitglied
Hi,

Log4J kann man natürlich für Hibernate verwenden. Wie die Einstellungen im JBoss konkret aussehen weiß ich leider nicht.
Verwendest du denn auch den Logger von log4j für die Logausgaben? Das müsste in etwa so aussehen:
Java:
private Logger log = Logger.getLogger(this.getClass());
//Die Logausgabe
log.info("Meine Logausgabe");

Gruß
 

Chtonian

Mitglied
Vielen Dank für deine Antwort!

Wir verwenden Log4j für alle anderen Ausgaben innerhalb des Serverkontextes und bei jedem anderen Element funktioniert das. Nur die Hibernatespezifischen Sachen werden nicht über log4j sondern über STDERR ausgegeben.
 

Fenixx

Aktives Mitglied
Hi,

aufgrund deines Beitrags kann zwar nicht eindeutig schließen, ob deine Frage beantwortet ist.
Deswegen hier ein Auszug aus der log4j.xml, was dich interessieren könnte. Die Konfiguration ist allerdings für den Glassfish. Sollte an sich aber keine Probleme mit dem JBoss geben:

Java:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <!-- The default pattern: Date Priority [Category] Message\n -->
            <param name="ConversionPattern" value="%-5p [%c{6}] %m%n"/>
        </layout>
    </appender>

    <!-- ############### Hibernate logging ################# -->

    <category name="org.hibernate">
        <priority value="TRACE"/>
    </category>

    <!--
    <category name="org.hibernate.SQL">
        <priority value="TRACE"/>
    </category>
    <category name="org.hibernate.type">
        <priority value="TRACE"/>
    </category>
    <category name="org.hibernate.loader">
        <priority value="TRACE"/>
    </category>
    <category name="org.hibernate.cache">
        <priority value="TRACE"/>
    </category>
    -->

    <root>
        <priority value="INFO"/>
        <appender-ref ref="CONSOLE"/>
    </root>

</log4j:configuration>


Gruß
 

Chtonian

Mitglied
So ich habe unsere jboss-log4j.xml angepasst, und nachwievor erscheinen die ausgaben von Hibernate nicht über das logging System sondern so:

Code:
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SCHWERWIEGEND: Unsuccessful: create table b2w_mining.t_ID_GEN ( ID_NAME varchar(255),  ID_VAL integer ) 
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SCHWERWIEGEND: Table 't_id_gen' already exists
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: schema update complete
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.util.NamingHelper getInitialContext
INFO: JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}

Ein normaler Eintrag hingegen sieht so aus:
Code:
INFO  [org.jboss.ejb3.JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
INFO  [org.jboss.ejb3.JmxKernelAbstraction] installing MBean: jboss.j2ee:ear=B2W.ear,jar=Persistence.jar,name=DataHandler,service=EJB3 with dependencies:
INFO  [org.jboss.ejb3.JmxKernelAbstraction] 	persistence.units:ear=B2W.ear,jar=Persistence.jar,unitName=Persistence
 

kama

Top Contributor
Hallo,

Code:
<appender name="HIBERNATE" class="org.apache.log4j.ConsoleAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="Target" value="System.out"/>
      <param name="Threshold" value="TRACE"/>
 
      <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
    </appender>
...
<category name="org.hibernate">  
      <priority value="TRACE"/>   
      <appender-ref ref="HIBERNATE"/>
    </category>
Und es wundert Dich nun, dass Ausgaben auf der Console sprich System.out kommen ? Hm...Da solltest Du nochmal einen Blick in die Log4j Configuration werfen....

MfG
Karl Heinz Marbaise
 

Chtonian

Mitglied
Na, ich glaube ich kann mich nich ganz deutlich ausdrücken :)

_Natürlich_ sollen die Einträge des Loggers auf System.out kommen, sonst müsste ich dauernd ein Logfile bemühen.

Was mich wundert, und was anscheinend hier niemanden auffällt, ist die Tatsache, dass die Einträge von Hibernate 1. nicht über den Logfile Parser geschickt werden, d.h. sie sind z.b. OHNE Timestamp, und dass sie über STDERR laufen, UND Danach nochmals als INFO, ERROR oder WARN ausgegeben werden.

Ich kopiere nochmals die betreffenden Einträge:

Hibernate:
Code:
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SCHWERWIEGEND: Unsuccessful: create table b2w_mining.t_ID_GEN ( ID_NAME varchar(255),  ID_VAL integer ) 
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
SCHWERWIEGEND: Table 't_id_gen' already exists
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: schema update complete

Normale JBoss ausgabe im System.out
Code:
11:39:28,768 INFO  [ExtendedDataHandler]  **** Statistics ****
11:39:28,768 INFO  [ExtendedDataHandler] Collection count: 0
11:39:28,768 INFO  [ExtendedDataHandler] Collection keys: {}
11:39:28,768 INFO  [ExtendedDataHandler] Entity count: 0
11:39:28,768 INFO  [ExtendedDataHandler] Entity keys: {}
11:39:28,768 INFO  [ExtendedDataHandler] Duration for <todotiny> 0 ms
11:39:28,768 INFO  [AbstractBaliWorker] Generation Time: 16 ms

Wie man hier erkennen kann, befolgt die logging ausgabe unseres ExtendedDataHandlers genau den Anweisungen aus der log4j.xml:

[XML]
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>

<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
[/XML]

Hibernate hingegen schickt seine Ausgaben über STDERR und danach als entsprechend dem Level des Logeintrags ins System.out

Code:
ERROR [STDERR] 02.07.2009 10:30:38 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: schema update complete

Also: ERROR [STDERR] .... und dann dadrunter: INFO: schema update complete

Ich hätte gerne folgende ausgabe: (den oberen Hibernate code korrekt formatiert):

Code:
02.07.2009 10:30:38 SCHWERWIEGEND [SchemaUpdate] Unsuccessful: create table b2w_mining.t_ID_GEN ( ID_NAME varchar(255),  ID_VAL integer ) 
02.07.2009 10:30:38 SCHWERWIEGEND [SchemaUpdate] execute Table 't_id_gen' already exists
02.07.2009 10:30:38 INFO [SchemaUpdate] schema update complete

Ich möchte 1. die gesamten STDERR einträge nicht haben, und 2. das Format sollte dem der log4j entsprechen.

Ich hoffe jetzt ist klar, was ich meine :)
 

akkie

Mitglied
Hi

konntest du das Problem beheben? Bei mir tritt das gleiche Phänomen mit ActiveMQ auf. Exceptions werden einfach nicht mit Log4J geloggt. Alle anderen Levels schon.

Im Eclipse-Log steht dann:

25.11.2009 14:30:47 org.apache.activemq.ActiveMQMessageConsumer dispatch
SCHWERWIEGEND: ID:ws2-3008-1259155837227-2:0:1:1 Exception while processing message: java.lang.RuntimeException: test

Mfg Akkie
 

dboeckli

Neues Mitglied
Hibernate benötigt ab 3.3 slf4j. Bei JBoss können die slf4j jar files aus dem JBoss Server 5.1 geholt werden oder via Maven mit folgender dependency Definition:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.slf4j</groupId>
<artifactId>slf4j-jboss-logging</artifactId>
<version>1.0.2.GA</version>
<scope>provided</scope>
</dependency>

Ich hoffe das wird weiterhelfen.

Dominique
 

computersport

Aktives Mitglied
Ist zwar schon etwas alt der Beitrag aber vielleicht Stolpert ja nochmal einer über dieses Problem.

Das Problem hatte ich auch.

guck in deine persistence.XML und schalt dort das Logging von Hibernate aus.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Log4J loggt Hibernate nicht in Kombination mit Tomcat Data Tier 2
I Hibernate / JPA: Eine Datenbank und pro User ein Schema Data Tier 9
T Hibernate/Spring JPA: eigene ID generieren Data Tier 5
Avalon @ManyToOne Hibernate oder JPA? Data Tier 5
D Hibernate Hibernate mit MariaDB Data Tier 1
ToBJo Hibernate Glassfish deploy mit Hibernate schlägt fehl Data Tier 1
C JPA Hibernate Map<String,String> richtig mappen Data Tier 2
S JPA Hibernate Search & EclipseLink (oder OpenJPA) Data Tier 0
R JPA Probleme mit Wechsel von EclipseLink auf Hibernate Data Tier 4
ARadauer Hibernate Entität readonly laden... Data Tier 1
G Hibernate SQL in Hibernate: Keine Parameter mit Index? Data Tier 2
P Wildfly + Hibernate + SQL Server Data Tier 0
E JPA Hibernate Query mit Timestamp hat seltsames Verhalten Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C Hibernate ProgressBar updaten mit Daten aus Hibernate Data Tier 4
B Hibernate und MySQL testen Data Tier 8
I Hibernate HQL: generiertes SQL ausgeben Data Tier 1
R mapping-file für hibernate zum Überschreiben der Annotationen Data Tier 7
R Hibernate Hibernate und Logback Data Tier 2
R Hibernate möchte Schema zwei mal undeployen Data Tier 2
F Hibernate Hibernate / JPA Data Tier 4
E Hibernate: Session vs EntityManager Data Tier 3
C Hibernate Hibernate Code Generation Data Tier 3
S Hibernate Mehrfachverbindung mit Hibernate Data Tier 3
M Hibernate Einstiegsfrage Data Tier 5
M Exception in thread "main" org.hibernate.MappingException: java.lang.ClassNotFoundException: Message Data Tier 4
S Hibernate Einstieg in Hibernate 3.2 sinnvoll? Data Tier 8
P JPA Eigene Vererbungsstrategie mit JPA / Hibernate Data Tier 2
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
Y Jboss seam-hibernate-jpa Data Tier 5
RaoulDuke Hibernate Map<String,String> mit Annotations mappen Data Tier 2
M Hibernate Hibernate with GWT Data Tier 4
C Hibernate JPA mysql db erstellen Data Tier 4
M Hibernate Hibernate liest Daten zu oft aus! Data Tier 16
pg1337 Hibernate Fragen Data Tier 11
D Probleme bei Left Joins mit Hibernate createCriterias() Data Tier 2
D Hibernate probleme mit Verlinkungstabelle Data Tier 4
2 Hibernate Annotations Data Tier 7
G Hibernate select update no wait Data Tier 8
Z Hibernate: Many-To-Many nur eine bestimmte Spalte Data Tier 3
K Hibernate - Envers - Erzeugung der SQL Skripte Data Tier 4
G Hibernate 1:n Beziehung mit Vererbung Data Tier 5
D Hibernate-Criteria-API (Projections und MAX-Funktion) Data Tier 6
L Hibernate: failed to lazily initialize a collection of role Data Tier 3
S Hibernate hibernate.cfg.xml Data Tier 14
D JPA vs Hibernate.cfg und Entitymanager Data Tier 6
H Hibernate - Mapping für Enumeration Data Tier 1
R Hibernate Criteria Abfrageproblem Data Tier 2
A Hibernate und jdbc zusammen Data Tier 4
D Mit Hibernate aus JUnit ein DB-Schema erzeugen Data Tier 6
S [Hibernate] No Persistence provider for EntityManager Data Tier 5
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
G Hibernate HQL und Interface Data Tier 4
G JSF Hibernate no session or session was closed Data Tier 12
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
S (Hibernate) Mapping einer Datenbanktabelle mit mehreren Fremdschlüssel Data Tier 7
X [Hibernate] Zusammengesetzte Entities möglich? Data Tier 7
N Hibernate Fake? Data Tier 2
S Problem beim Insert mit Hibernate Data Tier 9
V Hibernate Projection Data Tier 2
T org.hibernate.impl.SessionFactoryImpl Memory Leak Data Tier 10
G Hibernate Composite key Data Tier 11
X [Hibernate] Connection Pool - MinSize ? Data Tier 2
R Hibernate Criteria OR Data Tier 2
T hibernate/jpa abgefragte Listen immer mit Null-Werten gefüllt Data Tier 8
X [Hibernate] Anderen Connection Pool - Vorschläge? Data Tier 3
ARadauer Hibernate DDL Loggen Data Tier 6
G Hibernate abfrage Collection Data Tier 3
X [Hibernate] ReverseEngineering - Eigene Strategy verwenden? Data Tier 3
R Hibernate Criteria .group größer als Data Tier 5
R Hibernate daten laden Data Tier 7
H [Hibernate]1:1 Beziehung Data Tier 8
H [Hibernate]No CurrentSessionContext configured! Data Tier 6
X [Hibernate] Lässt sich die Dauer eines SELECTs loggen? Data Tier 4
R Hibernate n:n Relationtabelle mit Date Data Tier 3
H [Hibernate] Unknown Entity Data Tier 3
H [Hibernate] Configuration Data Tier 3
C [Hibernate] Generierung von hbm.xml to Java Data Tier 4
lumo Eclipse & JPA & Hibernate & Derby Data Tier 5
J Zufallsauswahl aus ResultList bei JPA(Hibernate) / Performance Data Tier 3
M Hibernate: Datum 0001-01-01 erzeugt null-Datum Data Tier 4
G Datenbankzugriff mit Hibernate Data Tier 7
Y Hibernate - Angabe des Schemas Data Tier 6
LadyMilka (Hibernate) in Criteria implizierter Join durch Subquery's Data Tier 8
M Hibernate Mehr als 1 Object speichern? Data Tier 18
M Unerklärliche Hibernate Exception Data Tier 20
LadyMilka (Hibernate) subquery in FROM-Clause Data Tier 9
haemi Viele DTOs in hibernate IdentityMap Data Tier 3
LadyMilka (hibernate) UNION dem Dialekt hinzufügen Data Tier 3
M Hibernate + Oracle 10g XE Data Tier 3
lumo Hibernate - entity class not found Data Tier 5
P SQL PRoblem Hibernate? Data Tier 8
J Vererbung mit JPA / Hibernate - pro/contra Data Tier 3
T JBoss/Hibernate: Abfrage dauert lang + hohe CPU? Data Tier 19
7 Hibernate-Abfrage (SubSelect im FROM) Data Tier 2
G Hibernate: many-to-one - Verwaiste Datensätze löschen Data Tier 2
G Layer für Datenbankzugriff Hibernate Data Tier 5
G Hibernate Zwischentabelle Data Tier 2
Java.getSkill() Hibernate und Spalte vom Typ xml Data Tier 6
G Hibernate 0...1 : 1 Beziehung Data Tier 6

Ähnliche Java Themen


Oben