U ovom ćemo uputstvu uz primjere naučiti o Javnom bilježenju i njegovim različitim komponentama.
Java nam omogućuje stvaranje i hvatanje dnevničkih poruka i datoteka kroz proces bilježenja.
U Javi zapisivanje zahtijeva okvire i API-je. Java ima ugrađeni okvir za evidentiranje u java.util.logging
paketu.
Također možemo koristiti okvire trećih strana kao što su Log4j, Logback i mnogi drugi za potrebe evidentiranja.
Komponente Java zapisnika
Slika u nastavku predstavlja osnovne komponente i tijek kontrole Java Logging API-ja ( java.util.logging
).
![](https://cdn.wiki-base.com/5463389/java_logging.png.webp)
1. Sjekač
Logger
Klasa pruža metode za prijavom. Možemo instancirati objekte iz Logger
klase i pozvati njene metode u svrhu evidentiranja.
Uzmimo primjer.
Logger logger = Logger.getLogger("newLoggerName");
getLogger()
Metoda Logger
klase se koristi za pronaći ili stvoriti novu Logger
. Argument niza definira ime zapisnika.
Ovdje ovo stvara novi Logger
objekt ili vraća postojeći Logger
s istim imenom.
Konvencija je definirati a Logger
nakon trenutne klase pomoću class.getName()
.
Logger logger = Logger.getLogger(MyClass.class.getName());
Napomena: Ova metoda će baciti NullPointerException
ako je proslijeđeno ime null
.
Svaka Logger
ima razinu koja određuje važnost poruke dnevnika. Postoji 7 osnovnih razina dnevnika:
Razina dnevnika (u opadajućem redoslijedu) | Koristiti |
---|---|
TEŠKO | ozbiljan neuspjeh |
UPOZORENJE | poruka upozorenja, potencijalni problem |
INFO | opće informacije o vremenu izvođenja |
KONFIG | informacije o konfiguraciji |
FINO | opće informacije o programeru (poruke o praćenju) |
FINIJE | detaljne informacije o programeru (poruke o praćenju) |
FINEST | vrlo detaljne informacije o programerima (praćenje poruka) |
ISKLJUČENO | isključiti bilježenje za sve razine (ništa ne snimati) |
SVI | uključiti bilježenje za sve razine (snimiti sve) |
Svaka razina dnevnika ima cjelobrojnu vrijednost koja određuje njihovu ozbiljnost, osim dvije posebne razine dnevnika OFF
i ALL
.
Zapisivanje poruke
Prema zadanim postavkama, gornje tri razine dnevnika uvijek se bilježe. Da bismo postavili drugačiju razinu, možemo se poslužiti sljedećim kodom:
logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE);
U ovom su primjeru zabilježene samo razina FINE
i razine iznad nje. Sve ostale poruke dnevnika se ispuštaju.
Sada za bilježenje poruke koristimo log()
metodu.
logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message");
Postoje stenografske metode za bilježenje na željenim razinama.
logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message");
Svi zahtjevi dnevnika koji su prošli postavljenu razinu dnevnika prosljeđuju se u LogRecord .
Napomena: Ako je razina dnevnika postavljena na null
, razina se nasljeđuje od roditelja i tako dalje prema stablu.
2. Filteri
Filtar (ako je prisutan) određuje treba li LogRecord proslijediti ili ne. Kao što naziv sugerira, filtrira poruke dnevnika prema određenim kriterijima.
LogRecord se prosljeđuje iz evidencije obrađivaču dnevnika, a obrađivač dnevnika vanjskim sustavima samo ako prođe navedene kriterije.
// set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter();
3. Rukovatelji (dodaci)
Obrađivač dnevnika ili dodavači primaju LogRecord i izvoze ga na različite ciljeve.
Java SE nudi 5 ugrađenih rukovatelja:
Rukovatelji | Koristiti |
---|---|
StreamHandler | piše na OutputStream |
ConsoleHandler | piše na konzolu |
FileHandler | piše u datoteku |
SocketHandler | upisuje na udaljene TCP portove |
MemoryHandler | upisuje u memoriju |
Rukovatelj može proslijediti LogRecord filtru kako bi ponovno utvrdio može li se proslijediti vanjskim sustavima ili ne.
Da bismo dodali novi rukovatelj, koristimo sljedeći kod:
logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler);
Da bismo uklonili rukovatelj, koristimo sljedeći kôd:
logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
Logger može imati više rukovatelja. Da bismo dobili sve rukovatelje, koristimo sljedeći kod:
Handler() handlers = logger.getHandlers();
4. Formatori
Rukovatelj također može koristiti Formatter za formatiranje objekta LogRecord u niz prije nego što ga izvozi u vanjske sustave.
Java SE ima dva ugrađena programa za formatiranje :
Formatori | Koristiti |
---|---|
SimpleFormatter | formatira LogRecord u niz |
XMLFormatter | formatira LogRecord u XML obrazac |
Za formatiranje obrađivača možemo koristiti sljedeći kod:
// formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter());
LogManager
Objekt LogManager prati globalne podatke zapisivanja. Čita i održava konfiguraciju evidentiranja i instance zapisnika.
Upravitelj dnevnika je jedan, što znači da je instanciran samo jedan njegov primjerak.
Da bismo dobili instancu upravitelja dnevnika, koristimo sljedeći kod:
LogManager manager = new LogManager();
Prednosti sječe
Evo nekoliko prednosti prijavljivanja u Javi.
- pomaže u praćenju tijeka programa
- pomaže u hvatanju eventualnih pogrešaka
- pruža podršku za dijagnozu problema i uklanjanje pogrešaka