Spec-Zone.ru › OpenJDK 27

Класс LogManager

java.lang.Object
java.util.logging.LogManager
public class LogManager extends Object
Существует единственный глобальный объект LogManager, который используется для хранения общего состояния Loggers и служб журналирования.

Этот объект LogManager:

  • Управляет иерархическим пространством имён объектов Logger. Все именованные объекты Logger хранятся в этом пространстве имён.
  • Управляет набором свойств управления журналированием. Это простые пары «ключ-значение», которые Handlers и другие объекты журналирования могут использовать для настройки.

Глобальный объект LogManager можно получить с помощью LogManager.getLogManager(). Объект LogManager создаётся при инициализации класса и впоследствии не может быть изменён.

При запуске класс LogManager определяется с помощью системного свойства java.util.logging.manager.

Конфигурация LogManager

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

LogManager определяет два необязательных системных свойства, позволяющих управлять начальной конфигурацией, как указано в методе readConfiguration():

  • java.util.logging.config.class
  • java.util.logging.config.file

Эти два системных свойства можно указать в командной строке команды "java" или передать как определения системных свойств в JNI_CreateJavaVM.

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

  • Свойство "handlers". Оно задаёт разделённый пробелами или запятыми список имён классов обработчиков, которые нужно загрузить и зарегистрировать как обработчики корневого Logger (Logger с именем ""). Каждое имя класса должно соответствовать классу Handler с конструктором по умолчанию. Обратите внимание, что эти Handlers могут создаваться отложенно, при первом использовании.
  • Свойство "<logger>.handlers". Оно задаёт разделённый пробелами или запятыми список имён классов обработчиков, которые нужно загрузить и зарегистрировать как обработчики указанного логгера. Каждое имя класса должно соответствовать классу Handler с конструктором по умолчанию. Обратите внимание, что эти Handlers могут создаваться отложенно, при первом использовании.
  • Свойство "<logger>.handlers.ensureCloseOnReset". Оно задаёт логическое значение. Если "<logger>.handlers" не задано или имеет пустое значение, это свойство игнорируется. В противном случае по умолчанию оно равно true. Если значение равно true, гарантируется, что связанные с логгером обработчики будут закрыты при вызове reset() и при завершении работы. Это поведение можно отключить, явно задав в конфигурации "<logger>.handlers.ensureCloseOnReset=false". Обратите внимание, что отключение этого свойства создаёт риск утечки ресурсов: логгер может быть собран сборщиком мусора до вызова reset(), что помешает закрыть его обработчики при вызове reset(). В этом случае приложение должно самостоятельно обеспечить закрытие обработчиков до того, как логгер будет собран сборщиком мусора.
  • Свойство "<logger>.useParentHandlers". Оно задаёт логическое значение. По умолчанию каждый логгер, помимо обработки сообщения журналирования самостоятельно, вызывает родительский логгер; часто в результате сообщения также обрабатываются корневым логгером. Если задать для этого свойства значение false, для данного логгера необходимо настроить Handler, иначе сообщения журналирования не будут доставляться.
  • Свойство "config". Это свойство предназначено для выполнения произвольного кода конфигурации. Оно задаёт разделённый пробелами или запятыми список имён классов. Для каждого указанного класса будет создан новый экземпляр. Конструктор каждого класса по умолчанию может выполнять произвольный код для изменения конфигурации журналирования, например задавать уровни логгеров, добавлять обработчики, фильтры и т. д.

Обратите внимание, что при конфигурировании LogManager все загружаемые классы сначала ищутся в системном пути классов, а затем — в пользовательском. Это относится к классу LogManager, классам конфигурации и классам обработчиков.

Логгеры организованы в иерархию имён на основе их имён, компоненты которых разделены точками. Так, "a.b.c" является дочерним логгером для "a.b", а "a.b1" и "a.b2" находятся на одном уровне.

Предполагается, что все свойства, имена которых заканчиваются на ".level", задают уровни журналирования для логгеров. Так, "foo.level" задаёт уровень журналирования для логгера с именем "foo" и (рекурсивно) для всех его дочерних логгеров в иерархии имён. Уровни журналирования применяются в том порядке, в котором они определены в файле свойств. Поэтому настройки уровня для дочерних узлов дерева должны следовать за настройками их родителей. Имя свойства ".level" можно использовать для задания уровня корня дерева.

Все методы объекта LogManager являются потокобезопасными.

Начиная с:
1.4

Краткое описание полей

Модификатор и тип Поле Описание
static final String LOGGING_MXBEAN_NAME
Строковое представление ObjectName для интерфейса управления службой журналирования.

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

LogManager()
Модификатор Конструктор Описание
protected
Защищённый конструктор.

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

Модификатор и тип Метод Описание
LogManager addConfigurationListener(Runnable listener)
Добавляет слушателя конфигурации, который вызывается каждый раз при чтении конфигурации журналирования.
boolean addLogger(Logger logger)
Добавляет именованный логгер.
void checkAccess()
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии.
Изначально этот метод проверял, доверен ли текущий контекст для изменения конфигурации журналирования.
Logger getLogger(String name)
Метод поиска именованного логгера.
Enumeration<String> getLoggerNames()
Возвращает перечисление известных имён логгеров.
static LoggingMXBean getLoggingMXBean()
Устарел.
java.util.logging.LoggingMXBean устарел; вместо него следует использовать java.lang.management.PlatformLoggingMXBean.
static LogManager getLogManager()
Возвращает глобальный объект LogManager.
String getProperty(String name)
Возвращает значение свойства журналирования.
void readConfiguration()
Считывает и инициализирует конфигурацию журналирования.
void readConfiguration(InputStream ins)
Считывает и инициализирует конфигурацию журналирования из указанного входного потока.
void removeConfigurationListener(Runnable listener)
Удаляет ранее зарегистрированный слушатель конфигурации.
void reset()
Сбрасывает конфигурацию журналирования.
void updateConfiguration(InputStream ins, Function<String, BiFunction<String,String,String>> mapper)
Обновляет конфигурацию журналирования.
void updateConfiguration(Function<String, BiFunction<String,String,String>> mapper)
Обновляет конфигурацию журналирования.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Подробное описание полей

LOGGING_MXBEAN_NAME

public static final String LOGGING_MXBEAN_NAME
Строковое представление ObjectName для интерфейса управления средством ведения журнала.
Начиная с:
1.5
См. также:
  • PlatformLoggingMXBean
  • Значения константных полей

Подробное описание конструкторов

LogManager

protected LogManager()
Защищённый конструктор. Он имеет такой уровень доступа, чтобы контейнерные приложения (например, контейнеры J2EE) могли создавать подклассы этого объекта. Конструктор не является открытым, поскольку предполагается, что объект LogManager будет только один; его значение получают вызовом LogManager.getLogManager.

Подробное описание методов

getLogManager

public static LogManager getLogManager()
Возвращает глобальный объект LogManager.
Возвращает:
глобальный объект LogManager

addLogger

public boolean addLogger(Logger logger)
Добавляет именованный регистратор. Если регистратор с таким именем уже зарегистрирован, метод ничего не делает и возвращает false.

Фабричные методы Logger вызывают этот метод для регистрации каждого вновь созданного Logger.

Приложению следует хранить собственную ссылку на объект Logger, чтобы избежать его сборки мусора. LogManager может хранить только слабую ссылку.

Параметры:
logger — новый регистратор.
Возвращает:
true, если регистратор-аргумент успешно зарегистрирован; false, если регистратор с таким именем уже существует.
Выбрасывает:
NullPointerException — если имя регистратора равно null.

getLogger

public Logger getLogger(String name)
Метод для поиска именованного регистратора.

Обратите внимание: поскольку недоверенный код может создавать регистраторы с произвольными именами, не следует полагаться на этот метод при поиске регистраторов для ведения журналов, связанных с безопасностью. Также важно учитывать, что связанный со строкой name регистратор может быть собран сборщиком мусора в любой момент, если на него нет сильной ссылки. Вызывающий этот метод код должен проверить, не равен ли возвращаемый результат null, чтобы корректно обработать случай, когда регистратор был собран сборщиком мусора.

Параметры:
name — имя регистратора
Возвращает:
соответствующий регистратор или null, если он не найден

getLoggerNames

public Enumeration<String> getLoggerNames()
Возвращает перечисление известных имён регистраторов.

Примечание. Регистраторы могут добавляться динамически по мере загрузки новых классов. Этот метод возвращает сведения только о регистраторах, зарегистрированных в данный момент. Также важно учитывать, что этот метод возвращает только имя Logger, а не сильную ссылку на сам Logger. Возвращённая строка никак не препятствует сборке Logger сборщиком мусора. В частности, если возвращённое имя передаётся в LogManager.getLogger(), вызывающий код должен проверить, не равен ли null результат LogManager.getLogger(), чтобы корректно обработать случай, когда регистратор был собран сборщиком мусора после того, как этот метод вернул его имя.

Возвращает:
перечисление строк с именами регистраторов

readConfiguration

public void readConfiguration() throws IOException
Считывает и инициализирует конфигурацию ведения журнала.

Если задано системное свойство "java.util.logging.config.class", его значение рассматривается как имя класса. Указанный класс будет загружен, будет создан экземпляр, а конструктор этого экземпляра отвечает за считывание исходной конфигурации. (Этот объект может использовать другие системные свойства для управления своей конфигурацией.) Альтернативный класс конфигурации может использовать readConfiguration(InputStream) для определения свойств в LogManager.

Если системное свойство "java.util.logging.config.class" не задано, этот метод считывает исходную конфигурацию из файла свойств и вызывает метод readConfiguration(InputStream) для инициализации конфигурации. Системное свойство "java.util.logging.config.file" можно использовать для указания файла свойств, который будет считан как исходная конфигурация; если оно не задано, используется конфигурация LogManager по умолчанию. Обычно конфигурация по умолчанию загружается из файла свойств "conf/logging.properties" в каталоге установки Java.

После считывания свойств будут вызваны все зарегистрированные слушатели конфигурации.

Примечание к API:
Этот метод readConfiguration следует использовать только для инициализации конфигурации во время инициализации LogManager или вместе со свойством "java.util.logging.config.class". Если этот метод вызывается после создания регистраторов и системное свойство "java.util.logging.config.class" не задано, все существующие регистраторы будут сброшены. Затем всем существующим регистраторам, для которых в новом потоке конфигурации указано свойство уровня, будет установлен заданный уровень ведения журнала.

Для корректного обновления конфигурации ведения журнала используйте методы updateConfiguration(java.util.function.Function) или updateConfiguration(java.io.InputStream, java.util.function.Function).

Выбрасывает:
IOException — если при считывании конфигурации возникли проблемы ввода-вывода.

reset

public void reset()
Сбрасывает конфигурацию ведения журнала.

Для всех именованных регистраторов операция сброса удаляет и закрывает все обработчики и (кроме корневого регистратора) устанавливает уровень в null. Уровень корневого регистратора устанавливается в Level.INFO.

Примечание к API:
Вызов этого метода также удаляет свойства LogManager. Для корректного обновления до новой конфигурации можно использовать метод updateConfiguration(Function) или updateConfiguration(InputStream, Function).

readConfiguration

public void readConfiguration(InputStream ins) throws IOException
Считывает и инициализирует конфигурацию ведения журнала из указанного входного потока.

После считывания свойств будут вызваны все зарегистрированные слушатели конфигурации.

Примечание к API:
Этот метод readConfiguration следует использовать только для инициализации конфигурации во время инициализации LogManager или вместе со свойством "java.util.logging.config.class". Если этот метод вызывается после создания регистраторов, все существующие регистраторы будут сброшены. Затем всем существующим регистраторам, для которых в указанном входном потоке задано свойство уровня, будет установлен заданный уровень ведения журнала.

Для корректного обновления конфигурации ведения журнала используйте метод updateConfiguration(java.util.function.Function) или updateConfiguration(java.io.InputStream, java.util.function.Function).

Параметры:
ins — поток, из которого считываются свойства
Выбрасывает:
IOException — если при чтении из потока возникли проблемы или указанный поток не имеет формата файла свойств.

updateConfiguration

public void updateConfiguration(Function<String, BiFunction<String,String,String>> mapper) throws IOException
Обновляет конфигурацию ведения журнала.

Если задано системное свойство "java.util.logging.config.file", его значение указывает файл свойств, который следует считать как новую конфигурацию. В противном случае используется конфигурация LogManager по умолчанию.
Обычно конфигурация по умолчанию загружается из файла свойств "conf/logging.properties" в каталоге установки Java.

Этот метод считывает новую конфигурацию и вызывает метод updateConfiguration(ins, mapper) для обновления конфигурации.

Примечание к API:
Этот метод обновляет конфигурацию ведения журнала, считывая файл свойств, и игнорирует системное свойство "java.util.logging.config.class". Свойство "java.util.logging.config.class" используется только методом readConfiguration() для загрузки пользовательского класса конфигурации в качестве исходной конфигурации.
Параметры:
mapper — функциональный интерфейс, принимающий ключ конфигурации k и возвращающий функцию f(o,n), результат которой будет применён к итоговой конфигурации. Функция f может вернуть null, чтобы указать, что свойство k не будет добавлено в итоговую конфигурацию.
Если mapper равно null, предполагается значение (k) -> ((o, n) -> n).
Для каждого k сопоставленная функция f вызывается со значением, связанным с k в старой конфигурации (то есть o), и значением, связанным с k в новой конфигурации (то есть n).
Значение null для o или n означает, что в соответствующей конфигурации для k не было задано значения.
Выбрасывает:
NullPointerException — если при вызове mapper возвращает функцию null.
IOException — если при чтении файла конфигурации ведения журнала возникли проблемы.
Начиная с:
9
См. также:
  • updateConfiguration(java.io.InputStream, java.util.function.Function)

updateConfiguration

public void updateConfiguration(InputStream ins, Function<String, BiFunction<String,String,String>> mapper) throws IOException
Обновляет конфигурацию ведения журнала.

Для каждого ключа конфигурации в существующей конфигурации и конфигурации, заданной входным потоком, вызывается указанная функция mapper для преобразования ключа конфигурации в функцию f(o,n). Она принимает старое и новое значения и возвращает значение, которое следует применить в итоговой конфигурации, как указано в таблице ниже.

Пусть k — ключ конфигурации в старой или новой конфигурации, o — старое значение (то есть значение, связанное с k в старой конфигурации), n — новое значение (то есть значение, связанное с k в новой конфигурации), а f — функция, возвращаемая mapper.apply(k): тогда v = f(o,n) — итоговое значение. Если v не равно null, в итоговую конфигурацию будет добавлено свойство k со значением v. В противном случае оно будет пропущено.
Функции f может быть передано значение null, указывающее, что в соответствующей конфигурации нет ключа k. Функция f может вернуть null, указывая, что в итоговой конфигурации значение для k отсутствует.

Если mapper равно null, то v будет установлено в n.

Свойства LogManager обновляются итоговыми значениями из итоговой конфигурации.

После успешного обновления конфигурации будут вызваны зарегистрированные слушатели конфигурации.

Обновление свойств конфигурации
Свойство Результирующее поведение
<logger>.level
  • Если в итоговой конфигурации задан уровень регистратора и он отличается от уровня, указанного в старой конфигурации, либо в старой конфигурации уровень не указан, то при наличии регистратора или его дочерних регистраторов уровень этого регистратора будет обновлён, а изменение распространится на все имеющиеся дочерние регистраторы. При необходимости это может привести к созданию регистратора.
  • Если в старой конфигурации для регистратора был задан уровень, а в итоговой конфигурации он отсутствует, это изменение не будет распространено на существующие регистраторы, если таковые имеются. Поэтому для полной замены конфигурации вызывающему коду следует вызвать reset, чтобы очистить текущую конфигурацию, прежде чем вызывать updateConfiguration.
<logger>.useParentHandlers
  • Если старое или итоговое значение свойства useParentHandlers не равно null, то при наличии регистратора или его дочерних регистраторов этот регистратор будет обновлён итоговым значением. Значение свойства useParentHandlers определяется конфигурацией; если оно не указано, по умолчанию используется true.
<logger>.handlers
  • Если в итоговой конфигурации задан список обработчиков регистратора и он отличается от списка, указанного в старой конфигурации для этого регистратора (который может быть пустым), то при наличии регистратора или его дочерних регистраторов связанные с ним обработчики будут закрыты и удалены, а новые обработчики будут созданы согласно итоговой конфигурации и добавлены к этому регистратору; при необходимости регистратор будет создан.
  • Если в старой конфигурации для регистратора были заданы обработчики, а в итоговой конфигурации их нет, обработчики этого регистратора будут удалены и закрыты, если он существует.
  • Изменение списка обработчиков существующего регистратора приведёт к удалению и закрытию всех его прежних обработчиков независимо от того, были ли они созданы из конфигурации или программно. Старые обработчики будут заменены новыми, если таковые имеются.
<handler-name>.*
  • Настройка или изменение свойств классов обработчиков влияет только на вновь созданные обработчики. Если для узла в старой и итоговой конфигурациях задан один и тот же список обработчиков, эти обработчики останутся без изменений.
config и любое другое свойство
  • Итоговые значения этих свойств будут сохранены в свойствах LogManager, однако updateConfiguration не будет анализировать или обрабатывать их значения.

Примеры функций преобразования:

  • Заменить все свойства ведения журнала новой конфигурацией:

    (k) -> ((o, n) -> n):

    это эквивалентно передаче параметра mapper со значением null.
  • Объединить новую и старую конфигурации, используя новое значение, если k существует в новой конфигурации:

    (k) -> ((o, n) -> n == null ? o : n):

    как при объединении двух коллекций следующим образом: result.putAll(oldc); result.putAll(newc).
  • Объединить новую и старую конфигурации, используя старое значение, если k существует в старой конфигурации:

    (k) -> ((o, n) -> o == null ? n : o):

    как при объединении двух коллекций следующим образом: result.putAll(newc); result.putAll(oldc).
  • Заменить все свойства новой конфигурацией, кроме свойства обработчика, которое задаёт обработчики Logger, не являющегося корневым регистратором:
    (k) -> k.endsWith(".handlers")
             ? ((o, n) -> (o == null ? n : o))
             : ((o, n) -> n)

Для полной повторной инициализации конфигурации приложение может сначала вызвать reset, чтобы полностью удалить старую конфигурацию, а затем вызвать updateConfiguration для инициализации новой конфигурации.

Параметры:
ins — поток для считывания свойств
mapper — функциональный интерфейс, принимающий ключ конфигурации k и возвращающий функцию f(o,n), результат которой будет применён к итоговой конфигурации. Функция f может вернуть null, чтобы указать, что свойство k не будет добавлено в итоговую конфигурацию.
Если mapper равно null, предполагается значение (k) -> ((o, n) -> n).
Для каждого k сопоставленная функция f вызывается со значением, связанным с k в старой конфигурации (то есть o), и значением, связанным с k в новой конфигурации (то есть n).
Значение null для o или n означает, что в соответствующей конфигурации для k не было задано значения.
Выбрасывает:
NullPointerException — если ins равно null или если при вызове mapper возвращает функцию null.
IOException — если при чтении из потока возникли проблемы или указанный поток не имеет формата файла свойств.
Начиная с:
9

getProperty

public String getProperty(String name)
Возвращает значение свойства ведения журнала. Если свойство не найдено, метод возвращает null.
Параметры:
name — имя свойства
Возвращает:
значение свойства

checkAccess

@Deprecated(since="17", forRemoval=true) public void checkAccess()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Изначально этот метод проверял, имеет ли текущий контекст достаточный уровень доверия для изменения конфигурации ведения журнала. Этот метод был полезен только совместно с менеджером безопасности, который больше не поддерживается. Замены менеджеру безопасности или этому методу нет.
Ничего не делает.

getLoggingMXBean

@Deprecated(since="9") public static LoggingMXBean getLoggingMXBean()
Устарело.
java.util.logging.LoggingMXBean устарел и заменён на java.lang.management.PlatformLoggingMXBean. Вместо него используйте ManagementFactory.getPlatformMXBean(PlatformLoggingMXBean.class).
Возвращает LoggingMXBean для управления регистраторами.
Возвращает:
объект LoggingMXBean.
Начиная с:
1.5
См. также:
  • PlatformLoggingMXBean

addConfigurationListener

public LogManager addConfigurationListener(Runnable listener)
Добавляет слушателя конфигурации, который будет вызываться при каждом считывании конфигурации ведения журнала. Если слушатель уже зарегистрирован, метод ничего не делает.

Слушатель вызывается с привилегиями, ограниченными контекстом вызова этого метода. Порядок вызова слушателей не определён.

Рекомендуется, чтобы слушатели не выбрасывали ошибки или исключения. Если выполнение слушателя завершается из-за неперехваченной ошибки или исключения, первое исключение будет передано вызывающему методу readConfiguration() (или readConfiguration(java.io.InputStream)) после вызова всех слушателей.

Примечание по реализации:
Если выполнение нескольких слушателей завершается из-за неперехваченной ошибки или исключения, реализация может записать дополнительные ошибки или исключения как подавленные исключения.
Параметры:
listener — слушатель конфигурации, который будет вызван после изменения конфигурации.
Возвращает:
этот LogManager.
Выбрасывает:
NullPointerException — если слушатель равен null.
Начиная с:
9

removeConfigurationListener

public void removeConfigurationListener(Runnable listener)
Удаляет ранее зарегистрированного слушателя конфигурации. Если слушатель не найден, метод ничего не сообщает.
Параметры:
listener — удаляемый слушатель конфигурации.
Выбрасывает:
NullPointerException — если слушатель равен null.
Начиная с:
9

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её дочерних компаний в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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