You are on page 1of 12

Praktikum

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

[INFO] 2012-11-02 22:46:43,896 MyLogger - this is a log message


6
Nivoi logovanja
Svaki log zapis ima pridruen nivo logovanja
Loger ima definisan nivo logovanja koji slui za filtriranje log zapisa
Loger pravi log zapise samo ako je njihov nivo jednak ili vei od nivoa
logovanja koji je pridruen logeru
Nivoi logovanja:
o OFF
o FATAL (najvii prioritet)
o ERROR
o WARN
o INFO
o DEBUG
o TRACE (najnii prioritet)
o ALL 7
Nivoi logovanja
Logger log = Logger.getLogger(com.acme.MyClass);
log.setLevel(INFO); //Loguje samo INFO i vee nivoe

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

public void doSomething{


log.debug(Im doing something);
}
}

Ovako definisani logeri obrazuju hijerarhiju slinu klasnoj hijerarhiji


Primer hijerarhije logera: root, com, com.acme, com.acme.Buffer
Nivoe logovanja i appender-e je mogue definisati u viem sloju hijerarhije
9
Konfigurisanje
Logeri se mogu konfigurisati programatski ili kroz konfiguracioni fajl
Tipino se koristi konfiguracioni fajl
o properties
o xml
Primer konfiguracionog fajla (treba da stoji u default paketu):

10
Upotreba
public class MyClass{
private static Logger log = Logger.getLogger(MyClass.class);

public int doMath(int arg1){


log.debug(Evaluating method doSomething for parameter +arg1);
try{
int result = MyOtherClass.moreMath(arg1);
}catch(MyException mex){
log.error(Do something failed to calculate result, mex);
}
}
}

[DEBUG] - Evaluating method doSomething for parameter 37.


[ERROR] - Do something failed to calculate result
com.acme.MyException
at com.acme.MyClass.doSomething(MyClass.java:53) 11
...
Hvala na panji

12

You might also like