objektno-orijentisano programiranje iiinasport.pmf.ni.ac.rs/materijali/2811/l01 - logovanje.pdf ·...
TRANSCRIPT
![Page 1: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/1.jpg)
Marko Milošević
![Page 2: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/2.jpg)
Logovanje informacija
Kreiranje poruka o tome šta program
radi.
Nešto kao
main(String[] args) {
System. .println("Aplikacija pokrenuta.");
System. .println("Pozdrav!");
System. .println("Kraj.");
}
![Page 3: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/3.jpg)
Prave aplikacije su složene
Najčešće su višeprocesne
Paralelno ih koristi veliki broj korisnika
Na jednom serveru može biti više
aplikacija
Svaka aplikacija može da komunicira sa
više pozadinskih servisa
![Page 4: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/4.jpg)
Zašto logovanje?
U velikim sistemima uvek dolazi do
grešaka
Tipična poruka koja se dobije od
korisnika u slučaju greške: „Ne radi“
Dodatne informacije su, uglavnom,
nedovoljne
Problem se najjednostavnije rešava ukoliko
su zapamćeni koraci koje je korisnik
izvršavao
![Page 5: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/5.jpg)
Zašto logovanje?
Omogućava naknadni pregled izvršenih
akcija i grešaka koje su se desile
U toku razvoja aplikacije
Pomaže pri otklanjanju grešaka (debugging)
U produkciji
Olakšava uočavanje i otklanjanje problema
nastalih pri korišćenju aplikacije
![Page 6: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/6.jpg)
Načini logovanja
Poruke mogu da se šalju na različite
destinacije
Konzola
Fajl
Baza podataka
Udaljeni server
...
![Page 7: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/7.jpg)
Java biblioteke
Postoji veliki broj biblioteka koje se
mogu korisiti
java.util.logging – standardna
biblioteka koja dolazi uz Javu
Log4j – jedna od najpopularnijih
Slf4j – fasada koja omogućava korišćenje
velikog broja biblioteka za logovanje na
jedinstveni način
![Page 8: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/8.jpg)
Primer (java.util.logging)
java.util.logging.Level;
java.util.logging.Logger;
BasicLogging {
Logger logger =
Logger.getLogger("BasicLogger");
main(String[] args) {
logger.log(Level. , "Aplikacija pokrenuta.");
logger.log(Level. , "Pozdrav!");
logger.log(Level. , "Kraj.");
}
}
![Page 9: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/9.jpg)
Primer (java.util.logging)
java.util.logging.Level;
java.util.logging.Logger;
BasicLogging {
Logger logger =
Logger.getLogger("BasicLogger");
main(String[] args) {
logger.info("Aplikacija pokrenuta.");
logger.severe("Pozdrav!");
logger.info("Kraj.");
}
}
![Page 10: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/10.jpg)
Nivoi logovanja
Služe za automatsko filtriranje poruka
![Page 11: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/11.jpg)
Proces logovanja
Logger Handler
Filter Filter Formatter
applikacija odredište
Poruka se šalje Logger objektu
Logger kroz Filter odlučuje da li da odbije poruku
Loger šalje poruku Handler objektu
Handler proverava da li da odbije poruku
Handler poziva Formatter da odredi kakav će tekst da kreira
Handler šalje poruku na destinaciju
![Page 12: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/12.jpg)
Klasa Logger
Instanca Logger klase služi za logovanje
poruka vezanih za određenu
komponentu aplikacije
Svaki Logger objekat ima ime
Standardno, imena se daju korišćenjem
imena paketa kojima klasa pripada
Čuva podatke o roditelju
![Page 13: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/13.jpg)
Klasa Logger
Instanca se dobija korišćenjem
getLogger metoda
Vraća novi ili postojeći objekat sa istim
imenom
Ima nivo logovanja koji se podešava
korišćenjem properties fajla ○ java -Djava.util.logging.config.file=<file>
ili dinamički ○ logger.setLevel(...)
![Page 14: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/14.jpg)
Filter
Filter je interfejs koji traži implementaciju
metoda isLoggable(LogRecord record)
Logger ima metod setFilter()
logger.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
return record.getMessage().contains("Aplikacija");
}
});
![Page 15: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/15.jpg)
Handler i Formatter
Postojeći Handler – i
StreamHandler: šalje poruke OutputStream objektu
ConsoleHandler: šalje poruke na System.err (ovo je podrazumevani Handler)
FileHandler: šalje poruke u fajl
SocketHandler: šalje poruke na TCP port
Formatter – i
SimpleFormatter (podrazumevan)
XmlFormatter
![Page 16: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/16.jpg)
Šta logovati
Ne treba logovati
Sve!
Samo događaje koji se dešavaju posle greške
Treba logovati
Kritične događaje
Rezultate dugog niza operacija
Interakciju sa drugim komponentama sistema
Kompleksne akcije
Akcije za koje se zna da mogu da uzrokuju
probleme
![Page 17: Objektno-orijentisano programiranje IIInasport.pmf.ni.ac.rs/materijali/2811/L01 - Logovanje.pdf · Java biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author:](https://reader033.vdocuments.net/reader033/viewer/2022042508/5a788c027f8b9aa2448d8811/html5/thumbnails/17.jpg)
Mogući problemi
Logovanje nepotrebnih poruka
Neodržavanje (gomilanje) starih log
fajlova
Većina sistema za logovanje ima mogućnost
deljenja log fajlova po nekom kriterijumu
(veličina, datum), što olakšava održavanje new FileHandler("log.xml", 1000, 10);