У овом упутству ћемо научити о Јава евидентирању и његовим различитим компонентама уз помоћ примера.
Јава нам омогућава креирање и хватање дневничких порука и датотека кроз процес евидентирања.
У Јави, евидентирање захтева оквире и АПИ-је. Јава има уграђени оквир за евидентирање у 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();
Предности сјече
Ево неколико предности пријављивања у Јави.
- помаже у праћењу тока програма
- помаже у хватању свих грешака које се могу појавити
- пружа подршку за дијагнозу проблема и отклањање грешака