logo

Log4j prieš SLF4J

SLF4J (paprastas registravimo fasadas, skirtas java) yra API, skirta suteikti bendrąją prieigą prie daugelio registravimo sistemų, viena iš jų yra log4j.

Iš esmės tai yra abstrakcijos sluoksnis. Tai nėra registravimo įgyvendinimas. Tai reiškia, kad jei rašote biblioteką ir naudojate SLF4J, galite duoti tą biblioteką naudoti kam nors kitam ir jie gali pasirinkti, kurį registravimo įgyvendinimą naudoti su SLF4J, pvz., log4j arba Java registravimo API. Jis naudojamas tam, kad programos nebūtų priklausomos nuo skirtingų registravimo API, kaip jos naudoja nuo jų priklausančias bibliotekas.

Tačiau mes paaiškiname skirtumą tarp Log4J ir SLF4J, kuris nusipelno tik vienos eilutės atsakymo. y., pats klausimas yra neteisingas. SLF4J ir Log4J skiriasi arba nėra panašūs komponentai. Kaip nurodyta pavadinime, SLF4J yra paprastas „Java“ registravimo fasadas. Tai nėra medienos ruošos komponentas ir net neatlieka tikrojo registravimo. Tai tik pagrindinio registravimo komponento abstrakcijos sluoksnis.

Jeigu Log4j , tai yra registravimo komponentas ir atlieka registravimo nurodymus. Taigi galime pasakyti, kad SLF4J ir Log4J logiškai yra du skirtingi dalykai.

Log4j prieš SLF4J

Dabar tereikia pasirinkti, kurią registravimo sistemą reikia naudoti vykdymo metu. Tam turėsite įtraukti du jar failus:

  • SLF4J įrišimo stiklainio failas
  • Norimi registravimo sistemos jar failai

Pavyzdžiui, norėdami naudoti log4j savo projekte, turėsite įtraukti toliau pateiktus jar failus:

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

Kai įdėsite abu jar failus į savo programos klasės kelią, SLF4J automatiškai juos aptiks ir pradės naudoti log4j žurnalo teiginiams apdoroti pagal konfigūraciją, kurią pateikėte log4j konfigūracijos faile.

Pavyzdžiui, žemiau kodas, kurį galite įrašyti į savo projekto klasės failą:

 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'); } } 

Kodėl SLF4J yra geresnis nei Log4J?

Visada sunku pasirinkti vieną iš SLF4J ir Log4j. Jei turite pasirinkimą, aš jums siūlyčiau; registravimo abstrakcija visada yra geriau nei registravimo sistema. Jei naudojate registravimo abstrakciją, ypač SLF4J, galime pereiti prie bet kokios registravimo sistemos, kurios mums reikia diegimo metu, nepasirinkdami vienos priklausomybės.

Toliau pateikiamos priežastys, dėl kurių pakanka pasirinkti SLF4J, o ne Log4j:

  • Visada geriau naudoti abstrakciją.
  • SLF4J yra atvirojo kodo biblioteka arba vidinė biblioteka, dėl kurios ji nepriklauso nuo konkretaus registravimo įgyvendinimo, o tai reiškia, kad nereikia valdyti kelių registravimo konfigūracijų kelioms bibliotekoms.
  • SLF4J teikia rezervuaru pagrįstą registravimą, kuris pagerina kodo skaitomumą pašalindamas tokius patikrinimus kaip isInforEnabled(), isDebugEnabled() ir kt.
  • Naudodami SLF4J registravimo metodą, atidedame registravimo pranešimų (eilutės) kūrimo išlaidas, kol jums jos prireiks, o tai yra efektyvus ir procesoriaus, ir atminties efektyvumas.
  • Kadangi SLF4J naudoja mažiau laikinų eilučių, šiukšlių surinkėjas turi mažiau darbo, o tai reiškia geresnį jūsų programos pralaidumą ir našumą.

Taigi iš esmės SLF4J nepakeičia log4j; jie abu dirba kartu. Tai pašalina jūsų taikomosios programos priklausomybę nuo log4j ir leidžia ateityje ją lengvai pakeisti labiau pajėgia biblioteka.