Spec-Zone.ru › OpenJDK 24

Класс MemoryHandler

java.lang.Object
java.util.logging.Handler
java.util.logging.MemoryHandler
public class MemoryHandler extends Handler
Handler, которая буферизует запросы в циклическом буфере в памяти.

Обычно эта Handler просто сохраняет входящие LogRecords в свой буфер памяти и отбрасывает более ранние записи. Такая буферизация очень дешёвая и избегает затрат на форматирование. В определённых условиях эта MemoryHandler выведет содержимое текущего буфера в целевой Handler, который, как правило, опубликует их во внешнем мире.

Существует три основных модели для запуска вывода буфера:

  • Входящее LogRecord имеет тип, превышающий предопределённый уровень, pushLevel.
  • Внешний класс явно вызывает метод push.
  • Подкласс переопределяет метод log и сканирует каждое входящее LogRecord, вызывая push, если запись соответствует определённым критериям.

Настройка: По умолчанию каждый MemoryHandler инициализируется с помощью следующих свойств конфигурации LogManager, где <handler-name> ссылается на полное имя класса обработчика. Если свойства не определены (или имеют недопустимые значения), используются указанные значения по умолчанию. Если значение по умолчанию не определено, выбрасывается исключение RuntimeException.

  • <имя-обработчика>.level указывает уровень для Handler (по умолчанию Level.ALL).
  • <имя-обработчика>.filter указывает имя класса Filter для использования (по умолчанию без Filter).
  • <имя-обработчика>.size определяет размер буфера (по умолчанию 1000).
  • <имя-обработчика>.push определяет pushLevel (по умолчанию level.SEVERE).
  • <имя-обработчика>.target указывает имя целевого класса Handler . (нет значения по умолчанию).

Например, свойства для MemoryHandler будут:

  • java.util.logging.MemoryHandler.level=INFO
  • java.util.logging.MemoryHandler.formatter=java.util.logging.SimpleFormatter

Для пользовательского обработчика, например, com.foo.MyHandler, свойства будут:

  • com.foo.MyHandler.level=INFO
  • com.foo.MyHandler.formatter=java.util.logging.SimpleFormatter
Since:
1.4

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

Конструктор Описание
MemoryHandler()
Создаёт MemoryHandler и настраивает его на основе свойств конфигурации LogManager.
MemoryHandler(Handler target, int size, Level pushLevel)
Создаёт MemoryHandler.

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

Модификатор и тип Метод Описание
void close()
Закрывает Handler и освобождает все связанные ресурсы.
void flush()
Вызывает сброс целевого Handler.
Level getPushLevel()
Получить pushLevel.
boolean isLoggable(LogRecord record)
Проверяет, будет ли этот Handler фактически регистрировать данную LogRecord в свой внутренний буфер.
void publish(LogRecord record)
Сохраняет LogRecord во внутренний буфер.
void push()
Выводит любой буферизованный вывод в целевой Handler.
void setPushLevel(Level newLevel)
Установить pushLevel.

Методы, объявленные в классе java.util.logging.Handler

getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel

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

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

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

MemoryHandler

public MemoryHandler()
Создаёт MemoryHandler и настраивает его на основе свойств конфигурации LogManager.

MemoryHandler

public MemoryHandler(Handler target, int size, Level pushLevel)
Создаёт MemoryHandler.

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

Parameters:
target - обработчик, в который нужно публиковать вывод.
size - количество записей журнала для буферизации (должно быть больше нуля)
pushLevel - уровень сообщения для вывода
Throws:
IllegalArgumentException - если size is <= 0

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

publish

public void publish(LogRecord record)
Сохраняет LogRecord во внутренний буфер.

Если есть Filter, его метод isLoggable вызывается для проверки, регистрируется ли данная запись журнала. Если нет, мы возвращаемся. В противном случае переданная запись копируется во внутренний циклический буфер. Затем свойство уровня записи сравнивается с pushLevel. Если заданный уровень больше или равен pushLevel, то вызывается push для записи всех буферизованных записей в целевой выходной Handler.

Specified by:
publish в классе Handler
Parameters:
record - описание события журнала. Нулевая запись игнорируется и не публикуется

push

public void push()
Выводит любой буферизованный вывод в целевой Handler.

Буфер затем очищается.

flush

public void flush()
Вызывает сброс целевого Handler.

Обратите внимание, что текущее содержимое буфера MemoryHandler не выводится. Для этого требуется "push".

Specified by:
flush в классе Handler

close

public void close()
Закрывает Handler и освобождает все связанные ресурсы. Это также закроет целевой Handler.
Specified by:
close в классе Handler

setPushLevel

public void setPushLevel(Level newLevel)
Установить pushLevel. После того, как LogRecord скопирован в наш внутренний буфер, если его уровень больше или равен pushLevel, то будет вызвано push.
Parameters:
newLevel - новое значение pushLevel

getPushLevel

public Level getPushLevel()
Получить pushLevel.
Returns:
значение pushLevel

isLoggable

public boolean isLoggable(LogRecord record)
Проверяет, будет ли этот Handler фактически регистрировать данную LogRecord в свой внутренний буфер.

Этот метод проверяет, имеет ли LogRecord соответствующий уровень и удовлетворяет ли он каким-либо Filter. Однако он не проверяет, приведет ли LogRecord к "push" содержимого буфера. Он вернёт false, если LogRecord равен null.

Overrides:
isLoggable в классе Handler
Parameters:
record - запись журнала (может быть null).
Returns:
true, если LogRecord будет зарегистрирован.

© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.logging/java/util/logging/MemoryHandler.html

Spec-Zone.ru

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