Јава евидентирање

У овом упутству ћемо научити о Јава евидентирању и његовим различитим компонентама уз помоћ примера.

Јава нам омогућава креирање и хватање дневничких порука и датотека кроз процес евидентирања.

У Јави, евидентирање захтева оквире и АПИ-је. Јава има уграђени оквир за евидентирање у java.util.loggingпакету.

Такође можемо користити независне оквире као што су Лог4ј, Логбацк и многи други у сврхе евидентирања.

Јава компоненте евидентирања

Доња слика представља основне компоненте и ток контроле Јава Логгинг АПИ ( java.util.logging).

Јава евидентирање

1. Дрвосјеча

LoggerКласа даје методе за евидентирање. Можемо инстанцирати објекте из Loggerкласе и позвати њене методе у сврху евидентирања.

Узмимо пример.

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

getLogger()Метод Loggerкласе се користи да пронађе или креира нову Logger. Аргумент низа дефинише име дневника.

Овде ово ствара нови Loggerобјекат или враћа постојећи Loggerса истим именом.

Конвенција је дефинисати а Loggerнакон тренутне класе помоћу class.getName().

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

Напомена: Овај метод ће бацити NullPointerExceptionако је прослеђено име null.

Свака Loggerима ниво који одређује важност поруке дневника. Постоји 7 основних нивоа евиденције:

Ниво дневника (у опадајућем редоследу) Користите
ТЕШКО озбиљан неуспех
УПОЗОРЕЊЕ порука упозорења, потенцијални проблем
ИНФО опште информације о времену извођења
ЦОНФИГ информације о конфигурацији
ФИНЕ опште информације за програмере (поруке о праћењу)
ФИНЕР детаљне информације о програмерима (поруке о праћењу)
ФИНЕСТ високо детаљне информације о програмерима (поруке о праћењу)
ВАН искључити евидентирање за све нивое (не снимати ништа)
СВЕ укључите евидентирање за све нивое (снимите све)

Сваки ниво дневника има целобројну вредност која одређује њихову тежину, осим два посебна нивоа дневника OFFи ALL.

Записивање поруке

Подразумевано се увек евидентирају прва три нивоа евиденције. Да бисмо поставили другачији ниво, можемо користити следећи код:

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

У овом примеру, само ниво FINEи нивои изнад њега су постављени за евидентирање. Све остале евиденцијске поруке се испуштају.

Сада за евидентирање поруке користимо log()метод.

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

Постоје стенографске методе за евидентирање на жељеним нивоима.

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

Сви захтеви дневника који су прошли задати ниво евиденције се затим прослеђују ЛогРецорд-у .

Напомена: Ако је ниво евиденције постављен на null, његов ниво се наслеђује од родитеља и тако даље према дрвету.

2. Филтери

Филтер (ако је присутан) одређује да ли ЛогРецорд треба проследити или не. Као што и само име говори, филтрира евиденцијске поруке према одређеним критеријумима.

ЛогРецорд је прошао само са регистратора до дневника руковалац и из дневника руковалац на екстерним системима, ако испуњава неке задатим критеријумима.

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

3. Руковаоци (додаци)

Обрађивач дневника или додавачи добијају ЛогРецорд и извозе га на различите циљеве.

Јава СЕ нуди 5 уграђених руковаоца:

Руковаоци Користите
StreamHandler пише у OutputStream
ConsoleHandler пише на конзолу
FileHandler пише у датотеку
SocketHandler уписује на удаљене ТЦП портове
MemoryHandler уписује у меморију

Руководилац може проследити ЛогРецорд филтру да поново утврди да ли се може проследити спољним системима или не.

Да бисмо додали нови обрађивач, користимо следећи код:

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

Да бисмо уклонили руковатељ, користимо следећи код:

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

Логгер може имати више руковаоца. Да бисмо добили све руковаоце, користимо следећи код:

 Handler() handlers = logger.getHandlers(); 

4. Форматтери

Руководилац такође може да користи Форматтер за форматирање објекта ЛогРецорд у низ пре него што га извози у спољне системе.

Јава СЕ има два уграђена програма за форматирање :

Форматтерс Користите
SimpleFormatter форматира ЛогРецорд у стринг
XMLFormatter форматира ЛогРецорд у КСМЛ образац

За форматирање обрађивача можемо користити следећи код:

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

ЛогМанагер

ЛогМанагер објекат прати глобалне информације евидентирање. Чита и одржава конфигурацију евидентирања и инстанце дневника.

Менаџер евиденције је један, што значи да је инстанциран само један његов примерак.

Да бисмо добили инстанцу менаџера дневника, користимо следећи код:

 LogManager manager = new LogManager(); 

Предности сјече

Ево неколико предности пријављивања у Јави.

  • помаже у праћењу тока програма
  • помаже у хватању свих грешака које се могу појавити
  • пружа подршку за дијагнозу проблема и отклањање грешака

Занимљиви Чланци...