Java zapisivanje

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.loggingpaketu.

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).

Java zapisivanje

1. Sjekač

LoggerKlasa pruža metode za prijavom. Možemo instancirati objekte iz Loggerklase i pozvati njene metode u svrhu evidentiranja.

Uzmimo primjer.

 Logger logger = Logger.getLogger("newLoggerName"); 

getLogger()Metoda Loggerklase se koristi za pronaći ili stvoriti novu Logger. Argument niza definira ime zapisnika.

Ovdje ovo stvara novi Loggerobjekt ili vraća postojeći Loggers istim imenom.

Konvencija je definirati a Loggernakon trenutne klase pomoću class.getName().

 Logger logger = Logger.getLogger(MyClass.class.getName()); 

Napomena: Ova metoda će baciti NullPointerExceptionako je proslijeđeno ime null.

Svaka Loggerima 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 OFFi 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 FINEi 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

Zanimljivi članci...