Click here to load reader

Objektno-orijentisano programiranje - Logovanje.pdf · PDF fileJava biblioteke Postoji veliki ... Objektno-orijentisano programiranje III Author: markom Created Date: 2/26/2016 8:20:41

  • View
    231

  • Download
    2

Embed Size (px)

Text of Objektno-orijentisano programiranje - Logovanje.pdf · PDF fileJava biblioteke Postoji...

  • Marko Miloevi

  • Logovanje informacija

    Kreiranje poruka o tome ta program

    radi.

    Neto kao

    main(String[] args) {

    System. .println("Aplikacija pokrenuta.");

    System. .println("Pozdrav!");

    System. .println("Kraj.");

    }

  • Prave aplikacije su sloene

    Najee su vieprocesne

    Paralelno ih koristi veliki broj korisnika

    Na jednom serveru moe biti vie

    aplikacija

    Svaka aplikacija moe da komunicira sa

    vie pozadinskih servisa

  • Zato logovanje?

    U velikim sistemima uvek dolazi do

    greaka

    Tipina poruka koja se dobije od

    korisnika u sluaju greke: Ne radi

    Dodatne informacije su, uglavnom,

    nedovoljne

    Problem se najjednostavnije reava ukoliko

    su zapameni koraci koje je korisnik

    izvravao

  • Zato logovanje?

    Omoguava naknadni pregled izvrenih

    akcija i greaka koje su se desile

    U toku razvoja aplikacije

    Pomae pri otklanjanju greaka (debugging)

    U produkciji

    Olakava uoavanje i otklanjanje problema

    nastalih pri korienju aplikacije

  • Naini logovanja

    Poruke mogu da se alju na razliite

    destinacije

    Konzola

    Fajl

    Baza podataka

    Udaljeni server

    ...

  • 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 omoguava korienje

    velikog broja biblioteka za logovanje na

    jedinstveni nain

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

    }

    }

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

    }

    }

  • Nivoi logovanja

    Slue za automatsko filtriranje poruka

  • Proces logovanja

    Logger Handler

    Filter Filter Formatter

    applikacija odredite

    Poruka se alje Logger objektu

    Logger kroz Filter odluuje 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

  • Klasa Logger

    Instanca Logger klase slui za logovanje

    poruka vezanih za odreenu

    komponentu aplikacije

    Svaki Logger objekat ima ime

    Standardno, imena se daju korienjem

    imena paketa kojima klasa pripada

    uva podatke o roditelju

  • Klasa Logger

    Instanca se dobija korienjem

    getLogger metoda

    Vraa novi ili postojei objekat sa istim

    imenom

    Ima nivo logovanja koji se podeava

    korienjem properties fajla java -Djava.util.logging.config.file=

    ili dinamiki logger.setLevel(...)

  • Filter

    Filter je interfejs koji trai implementaciju

    metoda isLoggable(LogRecord record)

    Logger ima metod setFilter()

    logger.setFilter(new Filter() {

    @Override

    public boolean isLoggable(LogRecord record) {

    return record.getMessage().contains("Aplikacija");

    }

    });

  • Handler i Formatter

    Postojei 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

  • ta logovati

    Ne treba logovati

    Sve!

    Samo dogaaje koji se deavaju posle greke

    Treba logovati

    Kritine dogaaje

    Rezultate dugog niza operacija

    Interakciju sa drugim komponentama sistema

    Kompleksne akcije

    Akcije za koje se zna da mogu da uzrokuju

    probleme

  • Mogui problemi

    Logovanje nepotrebnih poruka

    Neodravanje (gomilanje) starih log

    fajlova

    Veina sistema za logovanje ima mogunost

    deljenja log fajlova po nekom kriterijumu

    (veliina, datum), to olakava odravanje new FileHandler("log.xml", 1000, 10);