10 Stimmen

Ist es möglich, mit Log4J nur Meldungen einer Ebene zu protokollieren?

Wenn ich die Protokollstufe auf DEBUG einstelle, werden alle Meldungen mit einer Protokollstufe >= DEBUG protokolliert/gedruckt. Aber kann ich die Protokollstufe nur auf DEBUG setzen, so dass nur Meldungen mit der Protokollstufe DEBUG gedruckt werden. Oder kann ich einen Bereich angeben, wie z.B. alle Meldungen drucken, deren Protokollierungsstufe >= DEBUG aber < ERROR ist?

0 Stimmen

Wenn Sie vorhaben, etwas gegen den ursprünglichen Entwurf zu tun, können Sie den Quellcode ändern. Warum also nicht dem Entwurf folgen?

1 Stimmen

Ich versuche schon seit langem, das Gleiche herauszufinden.

2 Stimmen

Dies ist sehr nützlich. Beispiel: System.out erhält nur Debug. System.err erhält Error und Fatal. Sonst werden alle Fehler doppelt angezeigt. Das ist ziemlich ärgerlich.

8voto

Jarle Hansen Punkte 1971

Vielleicht können Sie einen LevelMatchFilter verwenden?

In manchen Situationen müssen Sie Protokolle je nach Ebene auf verschiedene Ausgaben schreiben. Wie kann dies durch einfache Konfiguration von Log4j erreicht werden? Es gibt einige Methoden unten.

http://wiki.apache.org/logging-log4j/LogToAppenderByLevel

3 Stimmen

Dieser Link leitet zu einer Anmeldeseite weiter.

2voto

Armer B. Punkte 657

Wie gesagt, Jarle, müssen Sie LevelMatchFilter . Ich werde es anhand einer einfachen Prüfung demonstrieren:

log4j.rootLogger = WARN, admin 
log4j.appender.admin=org.apache.log4j.rolling.RollingFileAppender
        log4j.appender.admin.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy
        log4j.appender.admin.rollingPolicy.FileNamePattern = Files\\TestLevels-%d{dd-MM-yyy}.txt
        log4j.appender.admin.layout = org.apache.log4j.PatternLayout
        log4j.appender.admin.layout.ConversionPattern = Date: %d{dd-MM-yyyy} Time: %d{HH:mm:ss} Message [%m]%n
        log4j.appender.admin.filter.01=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.01.LevelToMatch=FATAL
        log4j.appender.admin.filter.01.AcceptOnMatch=false
        log4j.appender.admin.filter.02=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.02.LevelToMatch=ERROR
        log4j.appender.admin.filter.02.AcceptOnMatch=true
        log4j.appender.admin.filter.03=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.03.LevelToMatch=WARN
        log4j.appender.admin.filter.03.AcceptOnMatch=false

In meinem Quelltext füge ich nur ERROR Nachrichten in Datei mit dem Namen TestLevels.txt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X