Javno beleženje

V tej vadnici bomo s pomočjo primerov spoznali Java Logging in njegove različne komponente.

Java nam omogoča, da skozi postopek beleženja ustvarjamo in zajemamo dnevniška sporočila in datoteke.

V Javi dnevniki zahtevajo ogrodje in API-je. Java ima v java.util.loggingpaketu vgrajen dnevniški okvir .

Za namene beleženja lahko uporabimo tudi ogrodja drugih proizvajalcev, kot so Log4j, Logback in še veliko več.

Komponente dnevnika Java

Spodnja slika predstavlja osnovne komponente in tok nadzora nad API-jem za beleženje Java ( java.util.logging).

Javno beleženje

1. Drvar

LoggerRazred določa metode za sečnjo. Predmete iz Loggerrazreda lahko primerimo in njegove metode pokličemo za beleženje.

Vzemimo primer.

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

getLogger()Metoda Loggerrazreda se uporablja za iskanje ali ustvarite novo Logger. Argument niza definira ime zapisovalnika.

Tu ustvari nov Loggerobjekt ali vrne obstoječega Loggerz istim imenom.

Pravilo je določiti a Loggerpo trenutnem razredu z uporabo class.getName().

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

Opomba: Ta metoda bo vrgla, NullPointerExceptionče je posredovano ime null.

Vsak Loggerima raven, ki določa pomembnost sporočila dnevnika. Obstaja 7 osnovnih stopenj dnevnika:

Raven dnevnika (v padajočem vrstnem redu) Uporaba
HUDO resna okvara
OPOZORILO opozorilno sporočilo, potencialna težava
INFO splošne informacije o času izvajanja
KONFIG informacije o konfiguraciji
V REDU splošne informacije za razvijalce (sporočila o sledenju)
FINER podrobne informacije za razvijalce (sporočila o sledenju)
NAJBOLJŠE zelo podrobne informacije o razvijalcih (sledenje sporočilom)
IZKLOPLJENO izklopi beleženje za vse ravni (ničesar ne zajema)
VSE vklopite beleženje za vse ravni (zajemite vse)

Vsaka raven dnevnika ima celoštevilčno vrednost, ki določa njihovo resnost, razen za dve posebni ravni dnevnika OFFin ALL.

Beleženje sporočila

Privzeto so vedno zabeležene tri najvišje ravni dnevnika. Za nastavitev drugačne ravni lahko uporabimo naslednjo kodo:

 logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); 

V tem primeru FINEso zabeleženi le nivoji in nivoji nad njim. Vsa ostala dnevniška sporočila so izpuščena.

Zdaj za prijavo sporočila uporabimo log()metodo.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

Obstajajo okrajšane metode za beleženje na želenih ravneh.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Vse zahteve dnevnika, ki so prestale nastavljeno raven dnevnika, se nato posredujejo v LogRecord .

Opomba: Če je raven beležnika nastavljena na null, se raven podeduje od starša in tako naprej po drevesu.

2. Filtri

Filter (če je prisoten) določa, ali je treba LogRecord posredovati ali ne. Kot že ime pove, filtrira dnevniška sporočila glede na določena merila.

LogRecord je minilo samo od logger v log trener in iz dnevnika vodnika z zunanjimi sistemi, če gre za natančno določene kriterije.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. Vodniki (dodatki)

Obdelovalec dnevnika ali pripisovalniki prejmejo LogRecord in ga izvozijo na različne cilje.

Java SE ponuja 5 vgrajenih upravljavcev:

Vodniki Uporaba
StreamHandler piše v OutputStream
ConsoleHandler piše v konzolo
FileHandler piše v datoteko
SocketHandler piše v oddaljena vrata TCP
MemoryHandler zapisuje v spomin

Obdelovalec lahko LogRecord pošlje filtru, da znova ugotovi, ali ga je mogoče posredovati zunanjim sistemom ali ne.

Za dodajanje novega vodnika uporabimo naslednjo kodo:

 logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Za odstranitev vodnika uporabimo naslednjo kodo:

 logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Drvar ima lahko več obdelovalcev. Da bi dobili vse upravljavce, uporabimo naslednjo kodo:

 Handler() handlers = logger.getHandlers(); 

4. Oblikovalci

Vodnik lahko uporabite tudi oblikovalnik formatirati LogRecord objekt v nizu pred izvozom na zunanje sisteme.

Java SE ima dva vgrajena Formatterja :

Oblikovalci Uporaba
SimpleFormatter formatira LogRecord v niz
XMLFormatter formati LogRecord v obliki XML

Za formatiranje vodnika lahko uporabimo naslednjo kodo:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

LogManager

Objekt LogManager spremlja globalne podatke beleženja. Bere in vzdržuje konfiguracijo beleženja in primerke dnevnikov.

Upravitelj dnevnika je en sam, kar pomeni, da je instanciran le en primerek.

Za pridobitev primerka upravitelja dnevnikov uporabimo naslednjo kodo:

 LogManager manager = new LogManager(); 

Prednosti sečnje

Tu je nekaj prednosti beleženja v Javi.

  • pomaga pri spremljanju poteka programa
  • pomaga pri zajemanju morebitnih napak
  • zagotavlja podporo za diagnozo in odpravljanje napak

Zanimive Članki...