logo

Log4j pret SLF4J

SLF4J (Vienkārša reģistrēšanas fasāde java) ir API, kas izstrādāta, lai nodrošinātu vispārēju piekļuvi daudzām reģistrēšanas sistēmām, un log4j ir viena no tām.

Tas būtībā ir abstrakcijas slānis. Tā nav reģistrēšanas ieviešana. Tas nozīmē, ka, ja jūs rakstāt bibliotēku un izmantojat SLF4J, varat nodot šo bibliotēku lietošanai kādam citam, un viņš var izvēlēties, kuru reģistrēšanas ieviešanu izmantot kopā ar SLF4J, piemēram, log4j vai Java reģistrēšanas API. To izmanto, lai novērstu lietojumprogrammu atkarību no dažādām reģistrēšanas API, tāpat kā tās izmanto bibliotēkas, kas ir atkarīgas no tām.

Tomēr mēs precizējam atšķirību starp Log4J un SLF4J, kas ir pelnījusi tikai vienu rindiņu atbildi. i., pats jautājums ir nepareizs. SLF4J un Log4J ir atšķirīgi, vai arī tie nav līdzīgi komponenti. Nosaukumā norādīts, ka SLF4J ir vienkārša Java reģistrēšanas fasāde. Tā nav mežizstrādes sastāvdaļa, un pat tā neveic faktisko reģistrēšanu. Tas ir tikai pamatā esošā reģistrēšanas komponenta abstrakcijas slānis.

cilpai c

Gadījumā, ja Log4j , tas ir reģistrēšanas komponents un veic reģistrēšanu, kas norādīts. Tātad mēs varam teikt, ka SLF4J un Log4J loģiski ir divas dažādas lietas.

prioritārā rinda java
Log4j pret SLF4J

Tagad jums tikai jāizvēlas, kura reģistrēšanas sistēma jums ir jāizmanto izpildlaikā. Lai to izdarītu, jums būs jāiekļauj divi jar faili:

  • SLF4J iesiešanas burkas fails
  • Vēlamie reģistrēšanas ietvara jar faili

Piemēram, lai projektā izmantotu log4j, jums būs jāiekļauj tālāk norādītie jar faili:

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

Kad esat ievietojis abus jar failus savā lietojumprogrammas klases ceļā, SLF4J to automātiski noteiks un sāks lietot log4j, lai apstrādātu žurnāla paziņojumus, pamatojoties uz konfigurāciju, ko norādījāt log4j konfigurācijas failā.

Piemēram, zemāk kods, kuru varat ierakstīt projekta klases 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'); } } 

Kāpēc SLF4J ir labāks par Log4J?

Vienmēr ir grūti izvēlēties vienu starp SLF4J un Log4j. Ja jums ir izvēle, es jums ieteiktu; mežizstrādes abstrakcija vienmēr ir labāka nekā mežizstrādes sistēma. Ja izmantojat reģistrēšanas abstrakciju, jo īpaši SLF4J, mēs varam migrēt uz jebkuru reģistrēšanas sistēmu, kas mums nepieciešama izvietošanas laikā, neizvēloties vienu atkarību.

lateksa fonta lielums

Tālāk ir norādīti iemesli, kas ir pietiekami labi, lai izvēlētos SLF4J, nevis Log4j:

  • Vienmēr labāk ir izmantot abstrakciju.
  • SLF4J ir atvērtā koda bibliotēka vai iekšējā bibliotēka, kas padara to neatkarīgu no jebkuras konkrētas reģistrēšanas ieviešanas, kas nozīmē, ka vairākām bibliotēkām nav jāpārvalda vairākas reģistrēšanas konfigurācijas.
  • SLF4J nodrošina vietturu reģistrēšanu, kas uzlabo koda lasāmību, noņemot pārbaudes, piemēram, isInforEnabled(), isDebugEnabled() utt.
  • Izmantojot SLF4J reģistrēšanas metodi, mēs atliekam reģistrēšanas ziņojumu (virknes) izveides izmaksas, līdz tas jums ir nepieciešams, kas ir gan CPU, gan atmiņas efektivitāte.
  • Tā kā SLF4J izmanto mazāk pagaidu virkņu, tas nozīmē mazāk darba atkritumu savācējam, kas nozīmē labāku caurlaidspēju un veiktspēju jūsu lietojumprogrammai.

Tātad būtībā SLF4J neaizstāj log4j; viņi abi strādā kopā. Tas noņem jūsu lietojumprogrammas atkarību no log4j un atvieglo to aizstāšanu ar spējīgāku bibliotēku.