SLF4J (faza jednostavnog bilježenja za Javu) je API dizajniran da omogući generički pristup mnogim okvirima za bilježenje, a log4j je jedan od njih.
To je u osnovi sloj apstrakcije. To nije implementacija zapisivanja. To znači da ako pišete biblioteku i koristite SLF4J, tu biblioteku možete dati nekome drugome na korištenje i on može odabrati koju će implementaciju bilježenja koristiti sa SLF4J, npr. log4j ili Java logging API. Koristi se za sprječavanje ovisnosti aplikacija o različitim API-jima za bilježenje baš kao što koriste biblioteke koje ovise o njima.
Međutim, elaboriramo razliku između Log4J i SLF4J koja zaslužuje samo jedan odgovor. tj. samo pitanje je pogrešno. SLF4J i Log4J su različite, ili nisu slične komponente. Kao što je navedeno u nazivu, SLF4J je jednostavna fasada za bilježenje za Javu. To nije komponenta za bilježenje, pa čak i ne radi stvarno bilježenje. To je samo sloj apstrakcije donje komponente zapisivanja.
string u json java
U slučaju Log4j , to je komponenta bilježenja i radi bilježenje koje je naloženo. Dakle, možemo reći da su SLF4J i Log4J logično dvije različite stvari.
aes protiv des
Sada, sve što trebate odabrati, koji okvir za bilježenje trebate koristiti u vremenu izvođenja. Za to ćete morati uključiti dvije jar datoteke:
- SLF4J jar datoteka za uvezivanje
- Željene jar datoteke okvira za bilježenje
Na primjer, da biste koristili log4j u svom projektu, morat ćete uključiti dolje navedene jar datoteke:
- slf4j-log4j12-1.7.12.jar
- log4j-1.2.17.jar
Nakon što smjestite obje jar datoteke u stazu klase svoje aplikacije, SLF4J će to automatski detektirati i početi koristiti log4j za obradu iskaza dnevnika na temelju konfiguracije koju ste dali u log4j konfiguracijskoj datoteci.
Na primjer, donji kod možete napisati u datoteku klase projekta:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info('Hello World'); } }
Zašto je SLF4J bolji od Log4J?
Uvijek je teško dati prednost jednom između SLF4J i Log4j. Ako imate izbora, predložio bih vam; apstrakcija zapisivanja uvijek je bolja od okvira zapisivanja. Ako koristite apstrakciju bilježenja, posebno SLF4J, možemo migrirati na bilo koji okvir bilježenja koji nam je potreban u trenutku implementacije bez odabira pojedinačne ovisnosti.
usporediti u Javi
Slijede razlozi koji su dovoljno dobri da odaberete SLF4J umjesto Log4j:
- Uvijek je bolje koristiti apstrakciju.
- SLF4J je biblioteka otvorenog koda ili interna biblioteka koja je čini neovisnom o bilo kojoj određenoj implementaciji bilježenja, što znači da nema potrebe za upravljanjem više konfiguracija bilježenja za više biblioteka.
- SLF4J pruža evidentiranje na temelju rezerviranog mjesta, što poboljšava čitljivost koda uklanjanjem provjera kao što su isInforEnabled(), isDebugEnabled(), itd.
- Korištenjem metode bilježenja SLF4J, odgađamo trošak konstruiranja poruka bilježenja (string), dok vam ne zatreba, što je učinkovito i za CPU i za memoriju.
- Budući da SLF4J koristi manji broj privremenih nizova, znači manje posla za skupljača smeća, što znači bolju propusnost i performanse za vašu aplikaciju.
Dakle, u biti, SLF4J ne zamjenjuje log4j; oboje rade zajedno. Uklanja ovisnost o log4j iz vaše aplikacije i olakšava njegovu zamjenu u budućnosti sa sposobnijom bibliotekom.