logo

Log4j proti SLF4J

SLF4J (faza preprostega beleženja za javo) je API, namenjen generičnemu dostopu do številnih ogrodij za beleženje, med katerimi je tudi log4j.

V bistvu je abstraktna plast. Ne gre za izvedbo beleženja. To pomeni, da če pišete knjižnico in uporabljate SLF4J, lahko to knjižnico daste nekomu drugemu v uporabo in ta lahko izbere, katero izvedbo beleženja bo uporabil s SLF4J, npr. log4j ali API za beleženje Java. Uporablja se za preprečevanje odvisnosti aplikacij od različnih API-jev za beleženje, tako kot uporabljajo knjižnice, ki so odvisne od njih.

Vendar pa pojasnjujemo razliko med Log4J in SLF4J, ki si zasluži samo eno vrstico odgovora. tj. samo vprašanje je napačno. SLF4J in Log4J sta različna ali pa nista podobni komponenti. Kot je navedeno v imenu, je SLF4J preprosta fasada za beleženje za Javo. To ni komponenta za beleženje in celo ne izvaja dejanskega beleženja. Je le abstraktna plast osnovne komponente beleženja.

koliko nič za en milijon

V primeru Log4j , je komponenta za beleženje in izvaja beleženje po navodilih. Tako lahko rečemo, da sta SLF4J in Log4J logično dve različni stvari.

Log4j proti SLF4J

Zdaj morate samo še izbrati, katero ogrodje za beleženje morate uporabiti v času izvajanja. Za to boste morali vključiti dve datoteki jar:

java je nična
  • Datoteka jar za vezavo SLF4J
  • Želene datoteke jar okvirja za beleženje

Na primer, če želite v svojem projektu uporabiti log4j, boste morali vključiti spodnje datoteke jar:

  • slf4j-log4j12-1.7.12.jar
  • log4j-1.2.17.jar

Ko postavite obe datoteki jar v razredno pot svoje aplikacije, jo bo SLF4J samodejno zaznal in začel uporabljati log4j za obdelavo izjav dnevnika na podlagi konfiguracije, ki ste jo podali v konfiguracijski datoteki log4j.

Na primer, spodnja koda, ki jo lahko zapišete v svojo datoteko razreda 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'); } } 

Zakaj je SLF4J boljši od Log4J?

Vedno je težko dati prednost enemu med SLF4J in Log4j. Če imate izbiro, bi vam predlagal; abstrakcija beleženja je vedno boljša od okvira beleženja. Če uporabljate abstrakcijo beleženja, zlasti SLF4J, lahko migriramo na katero koli ogrodje beleženja, ki ga potrebujemo v času uvajanja, ne da bi se odločili za eno samo odvisnost.

'primov algoritem'

Sledijo razlogi, ki so dovolj dobri, da izberete SLF4J namesto Log4j:

  • Vedno je bolje uporabiti abstrakcijo.
  • SLF4J je odprtokodna knjižnica ali notranja knjižnica, zaradi katere je neodvisna od katere koli posebne izvedbe beleženja, kar pomeni, da ni potrebe po upravljanju več konfiguracij beleženja za več knjižnic.
  • SLF4J zagotavlja beleženje na podlagi nadomestnih znakov, ki izboljša berljivost kode z odstranitvijo preverjanj, kot je isInforEnabled(), isDebugEnabled() itd.
  • Z uporabo metode beleženja SLF4J odložimo stroške konstruiranja sporočil beleženja (niz), dokler ga ne potrebujete, kar je učinkovito tako pri procesorju kot pri pomnilniku.
  • Ker SLF4J uporablja manjše število začasnih nizov, pomeni manj dela za zbiralnik smeti, kar pomeni boljšo prepustnost in zmogljivost za vašo aplikacijo.

Tako v bistvu SLF4J ne nadomešča log4j; oba delata skupaj. Odstrani odvisnost od log4j iz vaše aplikacije in olajša njeno zamenjavo v prihodnosti z zmogljivejšo knjižnico.