SLF4J
Deweloperzy | Ceki Gülcu |
---|---|
Wersja stabilna | 2.0.3 / 28 września 2022 r
|
Magazyn | |
Napisane w | Jawa |
System operacyjny | Międzyplatformowe |
Typ | Narzędzie do logowania |
Licencja | Licencja MIT |
Strona internetowa |
Simple Logging Facade for Java ( SLF4J ) udostępnia interfejs API logowania Java za pomocą prostego wzorca fasady . Podstawowe zaplecze rejestrowania jest określane w czasie wykonywania przez dodanie żądanego powiązania do ścieżki klasy i może to być standardowy pakiet rejestrowania Sun Java java.util.logging, Log4j , Reload4j, Logback lub tinylog.
Oddzielenie interfejsu API klienta od zaplecza rejestrowania zmniejsza sprzężenie między aplikacją a określoną strukturą rejestrowania. Może to ułatwić integrację z istniejącym kodem lub kodem innej firmy lub dostarczanie kodu do innych projektów, które już dokonały wyboru zaplecza rejestrowania.
SLF4J został stworzony przez Ceki Gülcü jako bardziej niezawodna alternatywa dla frameworka Jakarta Commons Logging. Badania przeprowadzone w 2013 roku na 10 000 projektów GitHub wykazały, że najpopularniejszą biblioteką Java jest SLF4J wraz z JUnit , z której korzysta 30,7% projektów. W styczniu 2021 roku zajął drugie miejsce na liście najpopularniejszych projektów według mvnrepository.
Podobieństwa i różnice z log4j 1.x
- Używanych jest pięć z sześciu poziomów rejestrowania log4j (BŁĄD, OSTRZEŻENIE, INFORMACJE, DEBUGOWANIE, ŚLEDZENIE). FATAL został usunięty na tej podstawie, że w ramach rejestrowania nie ma miejsca na decydowanie, kiedy aplikacja powinna się zakończyć, a zatem nie ma różnicy między ERROR a FATAL z punktu widzenia rejestratora. Ponadto znaczniki SLF4J oferują bardziej ogólną metodę znakowania instrukcji dziennika. Na przykład dowolne oświadczenie dziennika poziomu BŁĄD można oznaczyć znacznikiem „FATAL”.
- Instancje Loggera są tworzone przez
LoggerFactory
, co jest bardzo podobne w log4j. Na przykład,prywatny statyczny końcowy Logger LOG = LoggerFactory . getLogger ( Wombat . klasa );
- W programie Logger metody rejestrowania są przeładowane formularzami akceptującymi jedną, dwie lub więcej wartości. Wystąpienia prostego wzorca
{}
w komunikacie dziennika są kolejno zastępowane wartościami. Jest to proste w użyciu, ale zapewnia korzyści w zakresie wydajności, gdy wartości mają drogietoString()
. Gdy rejestrowanie jest wyłączone na danym poziomie, struktura rejestrowania nie musi oceniać reprezentacji łańcuchowej wartości ani konstruować ciągu komunikatów dziennika, który nigdy nie jest rejestrowany. W poniższym przykładzie konkatenacja łańcuchów i metodatoString()
metody dla wartościcount
lubuserAccountList
są wykonywane tylko wtedy, gdy włączone jest DEBUG.
LOG . debug ( "Istnieje teraz " + liczba + " kont użytkowników: " + userAccountList ); // wolniej LOG . debug ( "Istnieje teraz {} kont użytkowników: {}" , count , userAccountList ); // szybciej
- Podobne metody istnieją w programie Logger dla
isDebugEnabled()
itp., aby umożliwić zawijanie bardziej złożonych wywołań rejestrowania, tak aby były one wyłączane, gdy odpowiedni poziom jest wyłączony, unikając niepotrzebnego przetwarzania. - W przeciwieństwie do log4j , SLF4J oferuje metody rejestrowania, które akceptują znaczniki. Są to specjalne obiekty, które wzbogacają komunikaty dziennika. Obecnie logback jest jedynym frameworkiem, który wykorzystuje znaczniki.
Podobieństwa i różnice z log4j 2.x
Apache log4j 2.x obsługuje wszystkie funkcje slf4j.
Historia wersji
Wersja 2
Wersja 2 została wydana 20.08.2022, dla której dostępna jest wersja 2.0.3 . Wymaga Javy 8 lub nowszej.
Znaczące dodatki do funkcji:
- Wersja 2.0.0 dodaje obsługę składni lambda i używa Fluent API.
- Obsługa składni lambda w przekazywaniu komunikatów do logowania.
- Płynne API.
Wersja 1
Szczegóły wersji można znaleźć w instrukcji .
Znaczące wersje obejmują:
- Wersje wersji 1.7.36 są odtwarzalne.
- Moduł slf4j-log4j12 w wersji 1.7.35 został zastąpiony modułem slf4j-reload4j.
- Wersja 1.7.33 dodaje obsługę reload4j poprzez moduł slf4j-reload4j. Jest to najnowsza stabilna wersja. Zobacz Pobierz stronę produktu.
- Wersja 1.7.5 przyniosła znaczną poprawę czasów odzyskiwania rejestratora.
- Wersja 1.7.0 dodała obsługę varargs , wymagając obsługi języka Java 5 lub nowszego.
- Wersja 1.6 przyniosła implementację bez operacji używaną domyślnie, jeśli nie znaleziono powiązania.
- Wydania wersji 1.1 w repozytoriach Maven rozpoczęły się w latach 2006-09 .