2017-06-07 5 views
1

Ich möchte die Protokolle für eine einfache App konfigurieren, die in einem Tomcat ausgeführt wird, und ich möchte alle Protokolle mit Ausnahme der Fehler-Ebene in eine Datei und die Fehler in eine andere Datei senden.Konfigurieren von log4j.xml in Tomcat

Wie sollte ich die log4j.xml konfigurieren, damit es funktioniert?

<appender name="regular-container" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="regularLogs.log" /> 
</appender> 

<appender name="error-container" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="errorLogs.log" /> 
</appender> 

<logger name="regular-container"> 
????????????????????? 
</logger> 

<logger name="error-container"> 
????????????????????? 
</logger> 

Antwort

1

Versuchen Sie, diese log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true" 
    xmlns:log4j='http://jakarta.apache.org/log4j/'> 

    <appender name="errorsOnly" class="org.apache.log4j.RollingFileAppender"> 
     <param name="file" value="errorLogs.log" /> 
     <param name="threshold" value="ERROR" /> 
    </appender> 

    <appender name="regular" class="org.apache.log4j.RollingFileAppender"> 
     <param name="file" value="regularLogs.log" /> 
     <param name="threshold" value="DEBUG" /> 
    </appender> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="errorsOnly" /> 
     <appender-ref ref="regular" /> 
    </root> 

</log4j:configuration> 

Beachten Sie, dass dies in errors FATAL Protokollierung enthält, obwohl ich das ist in Ordnung annehmen. Wenn errorsOnly zuerst der Schwellenwert auf ERROR gesetzt ist, bedeutet dies, dass der Fehlerlevel oder höher durch errorsOnly behandelt wird. DEBUG oder höher, die noch nicht von Fehlern bearbeitet wurden, werden dann von regulär behandelt. Ich fand einen similar issue, der ein anderes Beispiel liefert.

0

Danke für die Antwort, aber es hat nicht funktioniert. Filterparameter für jeden Appender verwenden, ja.

<filter class="org.apache.log4j.varia.LevelRangeFilter"> 
     <param name="levelMin" value="ERROR" /> 
     <param name="levelMax" value="FATAL" /> 
    </filter> 
Verwandte Themen