Spec-Zone.ru › OpenJDK 17

Класс System.LoggerFinder

java.lang.Object
java.lang.System.LoggerFinder
Вложенный класс:
System
public abstract static class System.LoggerFinder extends Object
Сервис LoggerFinder отвечает за создание, управление и конфигурацию логгеров для используемой базовой структуры. Логгер-поисковик — это конкретная реализация этого класса, имеющая конструктор без аргументов и реализующая абстрактные методы, определённые в этом классе. Логгеры, возвращаемые логгер-поисковиком, способны маршрутизировать сообщения журнала в бэкэнд-систему ведения журналов, поддерживаемую данным поставщиком. Данное вызов 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.

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

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

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

Краткое описание конструкторов

LoggerFinder()
Модификатор Конструктор Описание
protected
Создаёт новый экземпляр LoggerFinder.

Краткое описание методов

Модификатор и тип Метод Описание
System.Logger getLocalizedLogger(String name, ResourceBundle bundle, Module module)
Возвращает локализованный экземпляр Logger для данного module.
abstract System.Logger getLogger(String name, Module module)
Возвращает экземпляр Logger для данного module.
static System.LoggerFinder getLoggerFinder()
Возвращает экземпляр 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 - модуль, для которого запрашивается логгер.
Возвращает:
a 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 в качестве параметра, перенаправляются на метод, принимающий его — передавая заданный bundle для локализации. Например, вызов 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 существует один глобальный экземпляр LoggerFinder. См. спецификацию класса, чтобы узнать, как находится и загружается реализация LoggerFinder.
Возвращает:
экземпляр LoggerFinder.
Исключения:
SecurityException - если менеджер безопасности присутствует и его метод checkPermission не разрешает RuntimePermission("loggerFinder").

© 1993, 2021, 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/17/docs/api/java.base/java/lang/System.LoggerFinder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API