2012-12-19 14 views
13

Ich habe eine Anwendung, die slf4j als Logging-Fassade verwendet. Jetzt möchte ich alle Fehlermeldungen abfangen, bevor die Übertragung an das zugrunde liegende Logging-System übergeben wird. Ist es möglich, das für slf4j zu tun? Ich habe die Dokumentation durchgesehen und gesehen, dass wir die Appender in der Implementierung ändern können (wie log4j), um dies zu erreichen, aber können wir das auf der Fassade selbst tun? Der Intercept macht grundlegende Dinge wie das Erhöhen eines globalen Zählers für die Anzahl von Fehlermeldungen usw.Intercept Log Messages slf4j

+1

Es klingt nicht wie eine gute Design-Entscheidung für mich. In Zukunft möchten Sie dies möglicherweise mithilfe der Konfiguration deaktivieren. Vielleicht haben Sie eine bestimmte Anforderung/Einschränkungen, die Sie mit uns teilen möchten. –

+1

Die Anforderung ist so einfach wie die, die ich erwähnte. Fehlerprotokolle durchsuchen und eine Benachrichtigung senden, wenn ein Schwellenwert erreicht ist? Ich suchte ein wenig und ich fand bestimmte Appenders, die dies für die Implementierungen tun [Link] (http://metrics.codahale.com/manual/logback/) – user1916312

Antwort

5

Es gibt nichts, um dies in der SLF4J-API zu tun.

Aber wenn Ihr Logger Logback ist, können Sie es mit einem Filter wie TurboFilter tun.

Wenn Sie Logback nicht verwenden, benötigen Sie wahrscheinlich einen AspectJ-Interceptor.

+0

Und wenn der besondere Anwendungsfall Log-Metriken erhalten, gibt es sind Appender verfügbar, die dies von Codahale Metrics erreichen [link] (http://metrics.codahale.com/manual/logback/) – user1916312