Класс System.LoggerFinder

Вложенный класс:
System
public abstract static class System.LoggerFinder
extends Object

Сервис LoggerFinder отвечает за создание, управление и настройку логгеров для используемой им базовой инфраструктуры. Logger Finder — это конкретная реализация этого класса, имеющая конструктор без аргументов и реализующая абстрактные методы, определённые в этом классе. Логгеры, возвращаемые Logger Finder, способны перенаправлять сообщения об ошибках в бэкенд системы логирования, поддерживаемый этим провайдером. В данном вызове Java Runtime существует единственный системный экземпляр LoggerFinder, который загружается следующим образом:

  • Сначала он ищет любой пользовательский LoggerFinder провайдер, используя механизм ServiceLoader с системным загрузчиком классов.
  • Если LoggerFinder провайдер не найден, используется системная реализация по умолчанию LoggerFinder.

Приложение может заменить бэкенд системы логирования даже при наличии модуля java.logging, просто предоставив и объявив реализацию сервиса System.LoggerFinder.

Реализация по умолчанию

Реализация системной логики по умолчанию LoggerFinder использует java.util.logging в качестве базовой инфраструктуры, когда присутствует модуль java.logging. Он возвращает экземпляр логгера logger, который будет перенаправлять сообщения об ошибках в java.util.logging.Logger. В противном случае, если java.logging отсутствует, реализация по умолчанию вернёт простой экземпляр логгера, который будет перенаправлять сообщения об ошибках уровня INFO и выше на консоль (System.err).

Настройка логирования

Экземпляры Logger, полученные из методов фабрики LoggerFinder , не могут быть непосредственно настроены приложением. Настройка зависит от базовой инфраструктуры системы логирования и, как правило, требует использования API, специфичных для этой инфраструктуры.

Для реализации по умолчанию LoggerFinder , использующей java.util.logging в качестве базовой инфраструктуры, обратитесь к java.util.logging для настройки логирования. Для реализации по умолчанию LoggerFinder , возвращающей простые логгеры, когда модуль java.logging отсутствует, настройка зависит от реализации.

Как правило, приложение, использующее систему логирования, регистрирует сообщения через фасад логгера, определённый (или поддерживаемый) этой системой. Приложения, которые хотят использовать внешнюю инфраструктуру, должны регистрировать через фасад, связанный с этой инфраструктурой.

Системный класс, которому необходимо регистрировать сообщения, обычно получает экземпляр System.Logger для перенаправления сообщений в выбранную приложением систему логирования.

Библиотеки и классы, которым нужны только логгеры для создания сообщений об ошибках, не должны пытаться настраивать логгеры самостоятельно, так как это сделает их зависимыми от конкретной реализации сервиса LoggerFinder.

Кроме того, когда присутствует менеджер безопасности, логгеры, предоставляемые системным классам, не должны настраиваться напрямую через бэкенд системы логирования без необходимых разрешений.
Ответственность провайдера конкретной реализации LoggerFinder заключается в обеспечении того, чтобы эти логгеры не настраивались ненадежным кодом без надлежащей проверки разрешений, так как настройка таких логгеров обычно влияет на все приложения в той же среде Java Runtime.

Уровни сообщений и сопоставление с уровнями бэкенда

Logger Finder отвечает за сопоставление уровня System.Logger.Level с уровнем, поддерживаемым используемым им бэкендом системы логирования.
LoggerFinder по умолчанию, использующий java.util.logging в качестве бэкенда, сопоставляет уровни System.Logger с уровнями java.util.logging соответствующей степени важности — как описано в Logger.Level.

С:
9
См. также:
System, System.Logger

Конструкторы

МодификаторКонструкторОписание
protected LoggerFinder()

Создаёт новый экземпляр LoggerFinder.

Методы

Модификатор и типМетодОписание
System.LoggergetLocalizedLogger​(String name, ResourceBundle bundle, Module module)

Возвращает локальный экземпляр Logger для данного module.

abstract System.LoggergetLogger​(String name, Module module)

Возвращает экземпляр Logger для данного module.

static System.LoggerFindergetLoggerFinder()

Возвращает экземпляр LoggerFinder.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

LoggerFinder

protected LoggerFinder()

Создаёт новый экземпляр LoggerFinder.

Примечание о реализации:
Рекомендуется, чтобы реализация сервиса LoggerFinder не выполняла никакой интенсивной инициализации в своём конструкторе, чтобы избежать возможных рисков тупика или циклов загрузки классов во время создания провайдера сервиса.
Исключение:
SecurityException — если менеджер безопасности присутствует и его метод checkPermission не позволяет RuntimePermission("loggerFinder").

Методы

getLogger

public abstract System.Logger getLogger(String name,
                                        Module module)

Возвращает экземпляр Logger для данного module.

Параметры:
name — имя логгера.
module — модуль, для которого запрашивается логгер.
Возвращает:
логгер logger, подходящий для использования в указанном модуле.
Исключение:
NullPointerException — если name является null или module является null.
SecurityException — если менеджер безопасности присутствует и его метод checkPermission не позволяет RuntimePermission("loggerFinder").

getLocalizedLogger

public System.Logger getLocalizedLogger(String name,
                                        ResourceBundle bundle,
                                        Module module)

Возвращает локализованный экземпляр Logger для данного module. Возвращаемый логгер будет использовать предоставленный набор ресурсов для локализации сообщений.

Требования к реализации:
По умолчанию этот метод вызывает this.getLogger(name, module) для получения логгера, а затем оборачивает этот логгер в экземпляр System.Logger, где все методы, не принимающие набор ресурсов ResourceBundle в качестве параметра, перенаправляются в метод, принимающий этот набор ресурсов — передавая данный набор ресурсов для локализации. Например, вызов Logger.log(Level.INFO, msg) приведёт к вызову Logger.log(Level.INFO, bundle, msg, (Object[])null) на экземпляре обернутого логгера. Однако по умолчанию строковые сообщения, возвращаемые Supplier<String>, не будут локализованы, так как предполагается, что такие строки являются сообщениями, которые уже построены, а не ключами в наборе ресурсов.

Реализация LoggerFinder может переопределить этот метод, например, если базовая система логирования предоставляет собственный механизм локализации сообщений об ошибках, такая реализация LoggerFinder сможет вернуть логгер, который напрямую использует этот механизм, предоставляемый бэкендом.

Параметры:
name — имя логгера.
bundle — набор ресурсов; может быть null.
module — модуль, для которого запрашивается логгер.
Возвращает:
экземпляр Logger, который будет использовать предоставленный набор ресурсов для локализации сообщений.
Исключение:
NullPointerException — если name является null или module является null.
SecurityException — если менеджер безопасности присутствует и его метод checkPermission не позволяет RuntimePermission("loggerFinder").

getLoggerFinder

public static System.LoggerFinder getLoggerFinder()

Возвращает экземпляр LoggerFinder. В среде Java Runtime существует единственный системный экземпляр LoggerFinder . См. спецификацию класса о том, как находится и загружается реализация LoggerFinder.

Возвращает:
экземпляр LoggerFinder.
Исключение:
SecurityException — если менеджер безопасности присутствует и его метод checkPermission не позволяет RuntimePermission("loggerFinder").

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/System.LoggerFinder.html

Spec-Zone .ru
спецификации, руководства, описания, API