Spec-Zone.ru › OpenJDK 25

Класс 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.

  • <handler-name>.level задает уровень для Handler (по умолчанию — Level.ALL).
  • <handler-name>.filter задает имя класса Filter для использования (по умолчанию Filter не используется).
  • <handler-name>.size задает размер буфера (по умолчанию — 1000).
  • <handler-name>.push задает pushLevel (по умолчанию — level.SEVERE).
  • <handler-name>.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
Начиная с версии:
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.

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

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

Методы, объявленные в классе 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 и размер буфера.

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

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

publish

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

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

Определено в:
publish в классе Handler
Параметры:
record — описание события журнала. Запись со значением null молча игнорируется и не публикуется

push

public void push()
Отправляет все буферизованные данные целевому Handler.

После этого буфер очищается.

flush

public void flush()
Выполняет сброс целевого Handler.

Обратите внимание, что текущее содержимое буфера MemoryHandler не записывается. Для этого необходимо выполнить «отправку».

Определено в:
flush в классе Handler

close

public void close()
Закрывает Handler и освобождает все связанные с ним ресурсы. При этом также закрывается целевой Handler.
Определено в:
close в классе Handler

setPushLevel

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

getPushLevel

public Level getPushLevel()
Возвращает pushLevel.
Возвращает:
значение pushLevel

isLoggable

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

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

Переопределяет:
isLoggable в классе Handler
Параметры:
record — LogRecord (может быть null).
Возвращает:
true, если LogRecord будет записана в журнал.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.logging/java/util/logging/MemoryHandler.html

Spec-Zone.ru

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