2012-04-02 9 views
0

Ich würde gerne Log4J verwenden, um die Ausgabe einer sehr spezifischen Natur zu einem anderen Protokoll von dem für alles andere angegeben zu senden. Gerade jetzt, ich habe ein log4j.properties, die ein bisschen wie folgt aussieht:Wie leite ich Logging-Ausgabe zu ausschließlich auf verschiedene Logger mit Log4J

log4j.rootLogger=INFO,catchall 
log4j.logger.SPECIAL_LOGGER=INFO,specials 
... catchall, specials appenders defined 

Ich möchte nur die Ausgabe vom Logger SPECIAL_LOGGER im specials appender - einfach genug - aber ich will nicht die Ausgabe von SPECIAL_LOGGER in meinem catchall Appender. Ich denke, das bedeutet, dass ich mit Loglevels nicht das machen kann, was ich brauche.

Irgendwelche Ideen?

Antwort

2

Stellen Sie einfach eine geeignete Additivität ein. Fügen Sie diese Zeile zu Ihrer log4j-Konfiguration hinzu.

log4j.additivity.SPECIAL_LOGGER=false 
+1

Ich wusste nicht über diese Funktion. Eine gute Antwort und macht genau das, was ich brauche. Vielen Dank! – Brabster

0

Ich benutzte dies in meiner App, damit es funktioniert. Sie müssen getrennte appender in Ihrem log4j.xml schaffen, so etwas wie dies helfen kann:

<appender name="myAppender" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="file" value="logs/date.log" />  
    <param name="append" value="true" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{HH:mm:ss z} %-5p [%c{1}] [%t] %C:%L - %m%n" /> 
    </layout> 
</appender> 

verschiedene params Verwendung in Appen, können Sie es nach Ihrem eigenen Weg anpassen.

+0

Ich benutze Appender bereits, aber ich muss von einem ausschließen. @ adarshrs Antwort scheint genau richtig zu sein. – Brabster

Verwandte Themen