Professional Documents
Culture Documents
Logovanje
Logovanje
Programski Sistemi
Logovanje
2014/2015
Sadraj
emu slui logovanje?
Logging framework
Osnovni elementi logging framework-a
o Logger
o Appender (Handler)
o Pattern (Formatter)
Nivo logovanja
Ime i hijerarhija logera
Konfigurisanje
Upotreba
2
emu slui logovanje?
Logovanje = beleenje dogaaja od interesa u toku izvravanja programa
Omoguava analizu ponaanja programa, praenje greki, jednostavnije
utvrivanje gde je nastao problem
Svaki ozbiljniji softver ima u sebi implementirano logovanje
Dogaaji od interesa:
o uhvaen izuzetak
o instanciran objekat klase
o registrovan neki dogaaj
o izvrena metoda
koji su parametri, koji je rezultat?
o itd.
3
Logging framework
Logging framework ine:
o biblioteka (ili skup vie biblioteka) koja omoguava logovanje,
o konfiguracioni fajlovi i
o dokumentovan API za korienje
Postoji nekoliko logging framework-a:
o JUL - java.util.logging
o Log4j
o Slf4j
o Apache Commons Logging
o Logback
o
Iako razliiti, svi imaju zajednike osnovne elemente
4
Osnovni elementi
Logger je objekat zaduen za logovanje, objekat koji proizvodi logove
Appender (Handler) prihvata logove i zatim ih upisuje/alje na destinaciju:
o u fajl
o u konzolu
o u bazu podataka
o na E-mail
o na udaljeni raunar
Appender se dodeljuje logeru
o Isti appender moe da bude dodeljen veem broju logger-a
o Isti logger moe da ima vie appender-a
Layout (Pattern) se dodeljuje appender-u, odreuje kako e logovi biti
formatirani
5
Osnovni elementi
#Logger
com.acme.MyLogger
#Appender #Appender
FileAppender ConsoleAppender
#Layout #Layout
[%p] %d %c - %m%n [%p] %c %M - %m%n
...
log.log(Level.INFO, "Hello there...");
log.info(Log zapis broj 1.);
INFO ERROR
log.debug(Log zapis broj 2.); DEBUG
DEBUG DEBUG
log.error(Log zapis broj 3.); INFO
TRACE ERROR
log.trace(Log zapis broj 4.); DEBUG
INFO
...
//ta se ulogovalo:
[INFO] - Log zapis broj 1.
[ERROR] - Log zapis broj 2.
8
Ime i hijerarhija logera
Svaki loger ima jedinstveno ime
Kao ime logera najee se konfigurie puno ime klase u kojoj je loger
definisan
public class Buffer{
private static final Logger log = Logger.getLogger(com.acme.Buffer);
//jo bolje ako uradimo log = Logger.getLogger(Buffer.class);
10
Upotreba
public class MyClass{
private static Logger log = Logger.getLogger(MyClass.class);
12