English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать примеры Java ведения журнала и его различных компонентов.
Java позволяет нам создавать и捕获 сообщения и файлы журнала через процесс ведения журнала.
В Java необходимо использовать фреймворк и API для ведения журналов. В Java встроен фреймворк для ведения журналов в пакете java.util.logging.
We can also use third-party frameworks (such as Log4j, Logback, etc.) for logging.
The following diagram shows the core components and specified process of the Java Logging API (java.util.logging).
The Logger class provides logging methods. We can instantiate an object from the Logger class and call its methods to log.
Let's take an example.
Logger logger = Logger.getLogger("newLoggerName");
The getLogger() method of the Logger class is used to find or create a new Logger. The string parameter defines the name of the logger.
Here, this will create a new Logger object or return a Logger object with the same name.
By convention, a Logger is defined after the class.getName() in the current class.
Logger logger = Logger.getLogger(MyClass.class.getName());
.If the passed name is null, this method will throw a NullPointerException.
Each Logger has a level that determines the importance of log messages. There are 7 basic log levels:
Log levels (in descending order) | Использование |
---|---|
SEVERE | Severe failure |
WARNING | Warning messages, potential issues |
INFO | Routine runtime information |
CONFIG | Configuration information |
FINE | Normal developer information (trace messages) |
FINER | Detailed developer information (trace messages) |
FINEST | Highly detailed developer information (trace messages) |
OFF | Disable logging for all levels (do not capture any content) |
ALL | Enable logging for all levels (capture all content) |
Each log level has an integer value that determines its severity, except for the two special log levels OFF and ALL.
By default, the first three log levels are always recorded. To set other levels, we can use the following code:
logger.setLevel(Level.LogLevel); // Пример logger.setLevel(Level.FINE);
In this example, only Level.FINE and above levels are set for logging. Delete all other log messages.
Now we need to record a log message, we use the log() method.
logger.log(Level.LogLevel, "log message"); // Пример logger.log(Level.INFO, "This is INFO log level message");
logger.log(Level.INFO, "Это сообщение LOGlevelname");
Есть некоторые сокращенные методы для записи необходимых уровней. logger.info("Это сообщение LOGlevelname");
logger.warning("Это сообщение LOGlevelname");LogRecordЗатем, все запросы на логирование, прошедшие через установленный уровень логирования, будут перенаправлены в
.Обратите внимание:
2. Фильтр (Фильтр)
Фильтр (если он существует) определяет, следует ли передавать логическое сообщение LogRecord. Как следует из названия, он фильтрует логические сообщения по определенным стандартам.LogRecordЕсли
Если заданные условия выполнены, то только из записывающего журнала передается в логический обработчик, и из логического обработчика передается во внешнюю систему. // Установить filter // Получить filter Filter filter = logger.getFilter();
Логический обработчик или приложение будет приниматьLogRecordИ экспортировать в различные цели.
Java SE предоставляет 5 встроенных обработчиков:
Обработчик | Использование |
---|---|
StreamHandler | Записать в OutputStream |
ConsoleHandler | Записать в консоль |
FileHandler | Записать в файл |
SocketHandler | Записать в удаленный TCP порт |
MemoryHandler | Записать в память |
Обработчик можетLogRecordПеренаправить в фильтр, чтобы еще раз определить, можно ли его перенаправить во внешнюю систему.
Чтобы добавить новый обработчик, мы используем следующий код:
logger.addHandler(handler); // Пример Handler handler = new ConsoleHandler(); logger.addHandler(handler);
Чтобы удалить обработчик, мы используем следующий код:
logger.removeHandler(handler); // Пример Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler);
Записывающий журнал может иметь несколько обработчиков. Чтобы получить все обработчики, мы используем следующий код:
Handler[] handlers = logger.getHandlers();
Обработчик может также использоватьФорматтерПреобразоватьLogRecordОбъектФорматированиедля строки, а затем ее экспортируют во внешнюю систему.
Java SE имеет два встроенныхФорматтер:
Форматирование программы | Использование |
---|---|
SimpleFormatter | Форматируем LogRecord в строковый формат |
XMLFormatter | Форматируем LogRecord в формат XML |
Мы можем использовать следующий код для форматирования обработчика:
// Форматирование в строковый формат handler.setFormatter(new SimpleFormatter()); // Форматирование в формат XML handler.setFormatter(new XMLFormatter());
Управление логамиГлобальные записи информации о отслеживании объектов. Он читает и поддерживает конфигурацию логов и экземпляры регистраторов.
Логовый менеджер является singleton, что означает, что был создан только один экземпляр.
Чтобы получить экземпляр менеджера логов, мы используем следующий код:
LogManager manager = new LogManager();
Вот некоторые преимущества использования Java логов.
Помогает мониторить поток программы
Помогает捕捉 любые возможные ошибки, которые могут возникнуть
Обеспечивает поддержку для диагностики и отладки проблем