Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java Logging“ ir įvairius jos komponentus.
„Java“ leidžia mums kurti ir užfiksuoti žurnalo pranešimus ir failus registravimo proceso metu.
„Java“ registravimui reikalingos sistemos ir API. „Java“ java.util.logging
pakete yra įmontuota registravimo sistema .
Prisijungimo tikslais taip pat galime naudoti trečiųjų šalių sistemas, tokias kaip „Log4j“, „Logback“ ir daugelį kitų.
„Java“ registravimo komponentai
Žemiau pateiktame paveiksle pavaizduoti pagrindiniai „Java Logging“ API ( java.util.logging
) komponentai ir valdymo srautas .

1. Medienos kirtėjas
Logger
Klasė suteikia metodus medienos ruoša. Mes galime iš karto nustatyti objektus iš Logger
klasės ir iškviesti jo metodus registravimo tikslais.
Paimkime pavyzdį.
Logger logger = Logger.getLogger("newLoggerName");
getLogger()
Iš metodą Logger
klasėje yra naudojama ir siekiant rasti arba sukurti naują Logger
. Stygos argumentas apibrėžia registratoriaus pavadinimą.
Čia sukuriamas naujas Logger
objektas arba grąžinamas esamas Logger
tuo pačiu pavadinimu.
Tai yra įprasta apibrėžti a Logger
po dabartinės klasės naudojant class.getName()
.
Logger logger = Logger.getLogger(MyClass.class.getName());
Pastaba: Šis metodas bus naudingas, NullPointerException
jei perduotas vardas yra null
.
Kiekvienas Logger
turi lygį, kuris nustato žurnalo pranešimo svarbą. Yra 7 pagrindiniai žurnalo lygiai:
Žurnalo lygis (mažėjimo tvarka) | Naudokite |
---|---|
DAUG | rimta nesėkmė |
ĮSPĖJIMAS | įspėjamasis pranešimas, potenciali problema |
INFO | bendra informacija apie vykdymo laiką |
PATIKRINTI | konfigūracijos informacija |
FINE | bendra informacija apie kūrėjus (pranešimų sekimas) |
FINER | išsami kūrėjo informacija (pranešimų sekimas) |
GERIAUSIA | labai išsami kūrėjo informacija (pranešimų sekimas) |
IŠJUNGTA | išjungti visų lygių registravimą (nieko neužfiksuoti) |
VISI | įjungti visų lygių registravimą (užfiksuoti viską) |
Kiekvienas žurnalo lygis turi sveiko skaičiaus vertę, kuri nustato jų sunkumą, išskyrus du specialius žurnalo lygius OFF
ir ALL
.
Žurnalas registruojamas
Pagal numatytuosius nustatymus visada užregistruojami trys aukščiausi žurnalo lygiai. Norėdami nustatyti kitą lygį, galime naudoti šį kodą:
logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE);
Šiame pavyzdyje FINE
nustatomas registruoti tik lygis ir aukštesni už jį lygiai. Visi kiti žurnalo pranešimai atmetami.
Dabar norėdami užregistruoti pranešimą naudojame log()
metodą.
logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message");
Yra greito registravimo metodai norimam lygiui.
logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message");
Tada visos žurnalo užklausos, perėjusios nustatytą žurnalo lygį, persiunčiamos į „ LogRecord“ .
Pastaba: Jei nustatomas registruotojo lygis null
, jo lygis paveldimas iš jo tėvų ir t. T. Medyje.
2. Filtrai
Filtras (jei jis yra) nustato, ar „ LogRecord“ reikia persiųsti, ar ne. Kaip rodo pavadinimas, jis filtruoja žurnalo pranešimus pagal konkrečius kriterijus.
„ LogRecord“ iš registravimo žurnalo tvarkytojo ir iš žurnalo tvarkytojo į išorines sistemas perduodamas tik tada, jei jis atitinka nurodytus kriterijus.
// set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter();
3. Tvarkytojai (priedai)
Žurnalo tvarkytojas arba priedai gauna „ LogRecord“ ir eksportuoja jį į įvairius taikinius.
„Java SE“ siūlo 5 įmontuotus tvarkykles:
Tvarkytojai | Naudokite |
---|---|
StreamHandler | rašo an OutputStream |
ConsoleHandler | rašo į konsolę |
FileHandler | rašo į bylą |
SocketHandler | rašo į nuotolinius TCP prievadus |
MemoryHandler | rašo į atmintį |
Tvarkytojas gali perduoti „ LogRecord “ filtrui, kad vėl nustatytų, ar jį galima persiųsti į išorines sistemas, ar ne.
Norėdami pridėti naują tvarkytuvą, naudojame šį kodą:
logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler);
Norėdami pašalinti prižiūrėtoją, naudojame šį kodą:
logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
Miškininkystėje gali būti keli tvarkytojai. Norėdami gauti visus tvarkytojus, mes naudojame šį kodą:
Handler() handlers = logger.getHandlers();
4. Formatai
Tvarkytojas taip pat gali naudoti „ Formatter“, kad suformatuotų „ LogRecord“ objektą į eilutę prieš eksportuodamas jį į išorines sistemas.
„Java SE“ turi du įmontuotus „ Formatters“ :
Formatai | Naudokite |
---|---|
SimpleFormatter | formatuoja „ LogRecord“ į eilutę |
XMLFormatter | formatuoja „ LogRecord“ į XML formą |
Mes galime naudoti šį kodą, norėdami suformatuoti tvarkytuvą:
// formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter());
„LogManager“
„ LogManager“ objektas seka visuotinę registravimo informaciją. Ji nuskaito ir prižiūri registravimo konfigūraciją ir kaupiklio egzempliorius.
Žurnalo tvarkytuvas yra pavienis, o tai reiškia, kad tik vienas jo egzempliorius yra momentinis.
Norėdami gauti žurnalo tvarkyklės egzempliorių, naudojame šį kodą:
LogManager manager = new LogManager();
Kirtimų privalumai
Štai keletas prisijungimo prie „Java“ privalumų.
- padeda stebėti programos eigą
- padeda užfiksuoti galimas klaidas
- teikia paramą problemoms diagnozuoti ir derinimui