2013-05-29 17 views
62

Pierwszy raz słyszę o markerów podczas odczytu:Co to są znaczniki w Java Logging frameworks i jaki jest powód ich używania?

http://slf4j.org/faq.html

sprawdzić dostępne metody Logger obiektu:

i stwierdził, interfejsy :

Bardziej szczegółowe informacje uzyskać od:

ale nadal nie zna ... Zauważ, że pytam dlaczego nie jak z nich korzystać, więc nie jest to duplikat:

UPDATE Wydaje się, że podczas korzystania z markerów również obowiązek napisać niestandardowy kod Java zamiast robić konfiguracja w XML lub .property plików ...

UPDATE 2 Od http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN"); 
logger.error(notifyAdmin, 
    "This is a serious an error requiring the admin's attention", 
    new Exception("Just testing")); 
+0

Aby użyć znaczników, należy użyć znacznika API dostarczonego przez SLF4J. Czy to masz na myśli "niestandardowy kod Java"? – Ceki

+0

@Ceki Wydaje się, że używanie tylko ** Logger.warn (Marker, msg) ** nie przyniosło żadnych korzyści, dopóki nie napisałeś klasy niestandardowej dla filtrów i nie zarejestrujesz ich ... Zwykła składnia ** logback.xml ** ma brak specjalnych zdolności do pracy z ** Markerem ** (wystarczy wydrukować je znacznikiem **% **) – gavenkoa

+1

Co jest "specjalnego" w tym, co jest prezentowane na http://logback.qos.ch/manual/appenders.html #OnMarkerEvaluator? – Ceki

Odpowiedz

65

To rehashed wersja my answer na pytanie "Best practices for using Markers in SLF4J/Logback".

Markerów można używać do koloru kolor lub oznaczyć jeden zestaw pojedynczego. To, co robisz z tymi kolorami, np. Markerami, należy wyłącznie do Ciebie. Jednak wydaje się, że dwa wzorce są powszechne (pierwszy częściej niż drugi) w przypadku użycia znacznika.

  1. Wyzwalanie: Niektóre appender mogłyby zostać poinformowani o konieczności podjęcia działania w obecności określonego markera. Na przykład, można skonfigurować SMTPAppender, aby wysłać wiadomość e-mail, gdy zdarzenie rejestrowania jest oznaczone znacznikiem NOTIFY_ADMIN niezależnie od poziomu rejestru. Zobacz marker-based triggering w dokumentacji logowania. Możesz również łączyć poziomy rejestrów i znaczniki do wyzwalania.

  2. Filtrowanie: Można na przykład koloru/oznaczyć wszystkie dzienniki utrwalania związanych (w różnych wersjach i wielu plikach klasa) z kolorem „DB”.Następnie można filtrować dla "DB": wyłączanie rejestrowania, z wyjątkiem instrukcji dziennika oznaczonych DB. Więcej informacji znajduje się w dokumentacji chapter on filters (wyszukaj MarkerFilter).

Przed nadejściem Markerów, aby osiągnąć podobne zachowanie, użytkownik miał opcję 1) używając niestandardowych poziomów 2) używać zmodyfikowanych nazw rejestratorów. API SLF4J obecnie nie obsługuje poziomów niestandardowych. Podobnie jak w przypadku opcji 2, nazwy sufiksów (lub prefiksów) są możliwe do zrealizowania, jeśli jeden lub dwa rejestratory wymagają modyfikacji. Takie podejście staje się niepraktyczne, ponieważ wkrótce 3 lub więcej rejestratorów musi być "podklasowanych", ponieważ skojarzone pliki konfiguracyjne stają się niemożliwe do zarządzania.