Регистрация в Java

В този урок ще научим за Java Logging и различните му компоненти с помощта на примери.

Java ни позволява да създаваме и улавяме регистрационни съобщения и файлове в процеса на регистриране.

В Java регистрирането изисква рамки и API. Java има вградена рамка за регистриране в java.util.loggingпакета.

Също така можем да използваме рамки на трети страни като Log4j, Logback и много други за целите на регистрацията.

Компоненти за регистриране на Java

Фигурата по-долу представя основните компоненти и потока на контрол на Java Logging API ( java.util.logging).

Регистрация в Java

1. Дърводобив

В Loggerклас осигурява методи за регистриране. Можем да създадем екземпляри на обекти от Loggerкласа и да извикаме методите му за целите на регистрацията.

Да вземем пример.

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

В getLogger()метода на Loggerкласа се използва, за да намерите или да създадете нов Logger. Аргументът низ определя името на регистратора.

Тук това създава нов Loggerобект или връща съществуващ Loggerсъс същото име.

Конвенцията е да се дефинира a 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"); 

Всички заявки за регистрационни файлове, които са преминали зададеното ниво на регистрационния файл, се препращат към LogRecord .

Забележка: Ако нивото на регистратора е зададено на null, нивото му се наследява от неговия родител и така нататък нагоре по дървото.

2. Филтри

Филтър (ако е наличен) определя дали LogRecord трябва да бъде препратен или не. Както подсказва името, той филтрира регистрационните съобщения според конкретни критерии.

А LogRecord се предава само от дървар да манипулатор дневник и от дневник манипулатор към външни системи, ако тя преминава на посочените критерии.

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

3. Манипулатори (приложения)

Манипулаторът на регистрационните файлове или приложенията получават LogRecord и го експортират към различни цели.

Java SE предоставя 5 вградени манипулатора:

Манипулатори Използвайте
StreamHandler пише в OutputStream
ConsoleHandler пише в конзолата
FileHandler записва във файл
SocketHandler записва в отдалечени TCP портове
MemoryHandler записва в паметта

Манипулаторът може да предаде LogRecord на филтър, за да определи отново дали може да бъде препратен към външни системи или не.

За да добавим нов манипулатор, използваме следния код:

 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. Форматисти

Манипулаторът може също да използва Formatter, за да форматира обекта LogRecord в низ, преди да го експортира във външни системи.

Java SE има два вградени форматиращи файла :

Форматисти Използвайте
SimpleFormatter форматира LogRecord в низ
XMLFormatter формати LogRecord към XML форма

Можем да използваме следния код за форматиране на манипулатор:

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

LogManager

Обектът LogManager проследява глобалната информация за регистриране. Той чете и поддържа регистрационната конфигурация и копията на регистратора.

Лог мениджърът е сингълтон, което означава, че е създаден само един екземпляр от него.

За да получим екземпляр на мениджъра на журнали, използваме следния код:

 LogManager manager = new LogManager(); 

Предимства на регистрацията

Ето някои от предимствата на влизането в Java.

  • помага за наблюдение на потока на програмата
  • помага при улавяне на евентуални грешки
  • осигурява поддръжка за диагностика на проблеми и отстраняване на грешки

Интересни статии...