Kas yra „Java“ registratorius ir kodėl jį naudojate?



Šis straipsnis apie „Logger“, esantį „Java“, yra išsamus „Java“ registravimo API, naudojamas registravimo sprendimams kuriant projektus, vadovas.

Registravimas yra svarbi funkcija, į kurią kūrėjai turi atsižvelgti, kad atsektų klaidas. , būdamas viena populiariausių programavimo kalbų, pateikiamas pritaikomas požiūris į registravimą teikiant pagrindinę registravimo API. Taigi, šiame straipsnyje apie „Logger“ sistemoje „Java“ aptarsiu, kaip tai padaryti gali naudoti šią funkciją, kad įgalintų išplėstinį registravimą „Java“.

Šiame straipsnyje bus aptariamos šios temos:





    1. Medienos ruošos poreikis
    2. Prisijungimo komponentai
    3. Kas yra „Logger“?
    4. Apendentas arba tvarkytojai
    5. Išdėstymas arba formatai

Prieš tai mes giliai neriame į medienos ruošą „Java“ sistemoje, supraskime medienos ruošos poreikį.

Medienos ruošos poreikis

Kuriant programas dažnai susiduriame su klaidomis, kurias reikia derinti. Taigi, naudodamiesi žurnalais, galime lengvai gauti informacijos apie tai, kas vyksta programoje, įrašydami klaidas ir neįprastas aplinkybes. Dabar tai gali jums įstrigti, kodėl gi nenaudojant System.out.print () sakinio . Na, šių teiginių problema yra ta, kad žurnalo pranešimai bus spausdinami tik konsolėje. Taigi, automatiškai uždarius konsolę, visi žurnalai bus prarasti. Todėl žurnalai nebus nuolat saugomi ir bus rodomi po vieną, nes tai yra vienos gijos aplinka.



Norėdami išvengti tokių problemų, prisijungimas prie 'Java' yra supaprastintas naudojantAPI teikiama perjava.util.loggingpaketą irorg.apache.log4j. *paketą.

Prisijungimo komponentai

„Java“ registravimo komponentai padeda kūrėjui kurti žurnalus, perduoti žurnalus į atitinkamą paskirties vietą ir išlaikyti tinkamą formatą. Šie trys komponentai yra šie:

  • Medkirčiai - Atsakingas už žurnalo įrašų surinkimą ir perdavimą atitinkamam pareiškėjui.
  • Apeliantai ar tvarkytojai - Jie yra atsakingi už žurnalo įvykių įrašymą į paskirties vietą. Prieš siunčiant išvestis, renginiai formatuoja įvykius naudodami maketus.
  • Maketai arba formatai - Atsakinga nustatyti, kaip duomenys atrodo, kai jie rodomi žurnalo įraše.

Toliau pateiktame paveikslėlyje galite pamatyti visų trijų komponentų veikimą:



Prisijungimo komponentai - „Logger“ „Java“ sistemoje - „Edureka“

Kai programa atlieka registravimo skambutį, „Logger“ komponentas įrašo įvykį į „LogRecord“ ir persiunčia jį atitinkamam „Appender“. Tada jis suformavo įrašą naudodamas maketą pagal reikiamą formatą. Be to, galite naudoti daugiau nei vieną filtrą, kad nurodytumėte, kurie priedai turėtų būti naudojami įvykiams.

Dabar supraskime, kas yra „Java“ registratorius.

Kas yra „Logger“ sistemoje „Java“?

„Java“ registratoriai yra objektai, kurie suaktyvina žurnalo įvykius. Jie yra sukurti ir iškviečiami programos kode, kur jie generuoja žurnalo įvykius, prieš perduodami juos kitam komponentui, kuris yra „Appender“. Galite naudoti kelis kaupiklius vienoje klasėje, kad atsakytumėte į įvairius įvykius, arba naudoti žurnalus „hierarchijoje“. Paprastai jie pavadinami naudojant hierarchinę taškais atskirtą vardų sritį. Be to, visi „Logger“ pavadinimai turi būti pagrįsti užregistruoto komponento klase arba paketo pavadinimu.

Be to, kiekvienas medienos tvarkytojas stebi artimiausią esamą protėvį Rąstai vardų sritį ir su ja susietas „Lygis“. Na, aptarsiu „Loggers“ šio straipsnio paskutinėje dalyje, bet prieš tai leiskite man parodyti, kaip sukurti „Logger“ „Java“.

Sukurkite naują „Logger“

Naujo „Logger“ kūrimo „Java“ procese procesas yra gana paprastas. Jūs turite naudoti„Logger.getLogger“ ()metodas. The„getLogger“ () identifikuoja registruotojo pavadinimą ir kaip parametrą laiko eilutę. Taigi, jei „Logger“ egzistuoja iš anksto, tas „Logger“ grąžinamas, kitaip sukuriamas naujas „Logger“.

ec2 sukurti egzempliorių iš momentinės nuotraukos

Sintaksė:

static Logger logger = Logger.getLogger (SampleClass.class.getName ())

Čia „SampleClass“ yra klasės pavadinimas, kuriam gauname „Logger“ objektą.

Pavyzdys:

viešosios klasės klientas {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Dabar, kai aš jums pasakiau, kaip sukurti „Logger“ „Java“, leiskite mums pamatyti skirtingus registravimo lygius.

Žurnalo lygiai

Žurnalo lygiai naudojami skirstyti žurnalus pagal jų sunkumą arba poveikį programos stabilumui. Theorg.apache.log4j. *paketą irjava.util.loggingabu teikia skirtingus kirtimo lygius. Pažvelkime į kiekvieną iš jų po vieną.

org.apache.log4j. *pakete pateikiami šie lygiai mažėjimo tvarka:

  • MIRTINAS
  • KLAIDA
  • ĮSPĖTI
  • INFO
  • KLAIDA

java.util.loggingpakete pateikiami šie lygiai mažėjimo tvarka:

  • SUNKUS (AUKŠČIAUSIAS LYGIS)
  • ĮSPĖJIMAS
  • INFO
  • PATIKRINTI
  • FINE
  • FINER
  • GERIAUSIAS (MAŽIAUSIO LYGIO)

Be to, aukščiau pateiktame pakete taip pat numatyti du papildomi lygiaiVISIirIŠJUNGTAnaudojamas registruoti visus pranešimus ir atitinkamai išjungti registravimą.

Prisijungimo prie „Java“, naudojantorg.apache.log4j. *paketas:

importuoti org.apache.log4j.Logger viešosios klasės klientą {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('WARNING' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Final Output')}}

Taigi, jei jūsų išvestis yrašakninių duomenų kaupiklis kaip WARN lygio mūsų log4j.savybės failą, tada visi klaidų pranešimai, turintys didesnį prioritetą nei WARN, bus spausdinami taip:

Taip pat galite nustatyti lygį naudodami metodą setLevel () išjava.util.loggingpakuotę, kaip nurodyta toliau:

kaip rūšiuoti skaičius c ++
logger.setLevel (lygis. ĮSPĖJIMAS)

Prisijungimo prie „Java“, naudojantjava.util.loggingpaketas:

paketas edureka importuoti java.io.IOException importuoti java.util.logging.Level importuoti java.util.logging.Logger importuoti java.util.logging. * klasė „EdurekaLogger“ {private final static Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) public void sampleLog () {LOGGER.log (Level.WARNING, 'Welcome to Edureka!')}} public class Customer {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level.WARNING, „Sveiki, Sveiki, tai„ Edureka “)}}

Norėdami įjungti prisijungimą savo programoje naudodamiorg.apache.log4j. *pakuotė arbajava.util.loggingpaketą, turite sukonfigūruoti ypatybių failą. Toliau šiame straipsnyje apie „Java“ registravimo programą aptarkime jų abiejų savybių failą.

„Log4j“ ir „Java Util“ paketo ypatybių failas

Failo „Log4j Properties“ pavyzdys:

# Įgalinti šakninio žurnalo parinktį log4j.rootLogger = INFO, failas, stdout # Pridėkite priedus spausdinti failą log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm : ss}% -5p% c {1}:% L -% m% n # Pridėkite priedus, kad spausdintumėte ant konsolės log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n
  • „Log4j“ ypatybių failas sukurtas projekto src aplanke.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Spausdina visus failo žurnalus
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Spausdina visus konsolės žurnalus
  • log4j.appender.file.File = D: loglogging.log -> Nurodo žurnalo failo vietą
  • log4j.appender.file.MaxFileSize = 10MB -> Maksimalus žurnalo failo dydis iki 10MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Apriboja atsarginių failų skaičių iki 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Nurodo šabloną, kuriuo žurnalai bus spausdinami į žurnalo failą.
  • log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Nustato numatytąjį konversijos modelį.

Pavyzdys „Java Util“ paketo ypatybių failas

handlers = java.util.logging.ConsoleHandler .level = ĮSPĖJIMAS # Išvestis bus saugoma numatytame kataloge java.util.logging.FileHandler.pattern =% h / java% u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Žurnalų lygis bus ribotas iki ĮSPĖJIMAS ir aukščiau. java.util.logging.ConsoleHandler.level = ĮSPĖJIMAS java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Čia

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Žurnalo failai bus parašytiC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->Didžiausia suma, kurią registratorius įrašo į bet kurį failą baitais.
  • java.util.logging.FileHandler.count = 1 -> Nurodo išvesties failų skaičių
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Nurodo formatavimą, naudojamą formatavimui. Čia naudojamas XML formatas.
  • java.util.logging.ConsoleHandler.level = ĮSPĖJIMAS -> Numatytąjį žurnalo lygį nustato ĮSPĖJIMAS
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->NurodoFormatasnaudoti visiems„ConsoleHandler“‘S. Čia naudojama „SimpleFormatter“.

Registruoti įvykius

Prisijungti įvykius , turite būti tikri, kad priskyrėte lygį, kad įvykiai būtų lengvai užrašomi. Norėdami priskirti lygį ir paminėti pranešimą, galite naudoti šiuos metodus:

1 metodas:

logger.log (Level.INFO, „Rodyti pranešimą“)
Čia lygis yra INFO, o pranešimas, kurį reikia spausdinti, yra „Rodyti pranešimą“.

2 metodas:

logger.info („Rodyti pranešimą“)

Norėdami įsitikinti, kad „Java“ registratorius registruoja tik tuos įvykius, kurie yra INFO lygio arba aukštesnio lygio, galite naudoti setLevel () aukščiau aptartas metodas.

Dabar, kai aptariau, kaip naudoti „Logger“ „Java“, aptarkime kitą „Log4j“ architektūros komponentą, t. Y. „Appenders“.

Apendentas arba tvarkytojai

„Appender“ arba „Handlers“ yra atsakingi už žurnalo įvykių įrašymą į paskirties vietą. Kiekvienas registratorius turi prieigą prie kelių tvarkytojų ir gauna žurnalo pranešimą iš registruotojo. Tada „Appenders“ naudoja „Formatters“ arba „Layouts“, kad suformatuotų įvykius ir išsiųstų juos į atitinkamą paskirties vietą.

„Appender“ galima išjungti naudojant metodą „setLevel“ (Level.OFF). Du standartiškiausi tvarkytojaijava.util.loggingpakuotės yra tokios:

  • „FileHandler“: Parašykite žurnalo pranešimą į failą
  • „ConsoleHandler“: Rašo žurnalo pranešimą į konsolę

Jūsų geresniam supratimui aš paaiškinau keletą priedų savybių skyriuje.

Išdėstymas arba formatai

„Formatters“ išdėstymas naudojamas formatuoti ir konvertuoti duomenis žurnalo įvykyje.Prisijungimo sistemose pateikiami HTML, XML, Syslog, JSON, paprasto teksto ir kitų žurnalų išdėstymai.

  1. „SimpleFormatter“ : Generuoja tekstinius pranešimus su pagrindine informacija.
  2. XML forma : Generuoja žurnalo XML pranešimą

Geresniam jūsų supratimui paaiškinau keletą maketų savybių skyriuje.Tuo mes baigiame šį tinklaraštį „Logger in Java“. Tikiuosi, kad jums, vaikinai, yra aišku, ko išmokėte šiame straipsnyje.

Patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai yra skirti studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žvalgytis į „Java“ programavimą ir išmokyti pagrindines ir pažangesnes „Java“ koncepcijas kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio „Logger in Java“ komentarų skyriuje ir mes kuo greičiau susisieksime su jumis.