В този урок ще научим за Java Logging и различните му компоненти с помощта на примери.
Java ни позволява да създаваме и улавяме регистрационни съобщения и файлове в процеса на регистриране.
В Java регистрирането изисква рамки и API. Java има вградена рамка за регистриране в java.util.logging
пакета.
Също така можем да използваме рамки на трети страни като Log4j, Logback и много други за целите на регистрацията.
Компоненти за регистриране на Java
Фигурата по-долу представя основните компоненти и потока на контрол на Java Logging API ( java.util.logging
).

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.
- помага за наблюдение на потока на програмата
- помага при улавяне на евентуални грешки
- осигурява поддръжка за диагностика на проблеми и отстраняване на грешки