Verständisproblem log4j (categorie, levelRangeFilter) und verschiedene Logger

navino

Mitglied
Hallo,

ich möchte folgendes mit log4j konfigurieren:
Eine Datei die alle HibernateStatements mit Parameter loggt.
Eine Datei in der nur die Fehler (warn, error, fatal) geloggt werden.
Eine Datei für den Rest(ohne Fehler, ohne Hibernate).
Während er Entwicklung soll natürlich alles in die Console geschrieben werden.

Habe dazu folgendes xml angelegt:

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

<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
</layout>
</appender>

<appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/app.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{dd.MM.yyyy HH:mm:ss}-%5p-%c{1}:%L -%m%n"/>
</layout>
</appender>

<appender name="fileErrorAppender" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/app-error.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{dd.MM.yyyy HH:mm:ss}-%5p-%c{1}:%L -%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="warn" />
<param name="LevelMax" value="fatal" />
</filter>
</appender>

<!-- ERROR-Logger für alle Klassen meiner Applikation -->
<logger name="de">
<level value="warn"/>
<appender-ref ref="fileErrorAppender" />
</logger>
<appender name="appenderSQLFile" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${catalina.home}/logs/app-hibernate.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="2000KB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %m%n"/>
</layout>
</appender>

<category name="org.hibernate.SQL">
<priority value="TRACE"/>
<appender-ref ref="appenderSQLFile" />
</category>

<category name="org.hibernate.type">
<appender-ref ref="appenderSQLFile" />
</category>

<logger name="org.hibernate">
<appender-ref ref="appenderSQLFile" />
</logger>

<root>
<level value="info" />
<appender-ref ref="consoleAppender" />
</root>

</log4j:configuration>

Was funktioniert:
- errors werden in das error-file geschrieben.
- die Hibernateausgaben kommen auch in die hibernate-Datei.

Mein Problem ist, das in der Console die Hibernatestatements auch noch drin sind!

Wie bekomme ich das hin?

Was mir nicht klar ist, wann ich LevelRangeFilter benutzen soll, wann ich eigene Logger benötige, und wie der root-Logger konfiguriert werden muss?

Gruß
navino
 
Zuletzt bearbeitet:
Zurück