Spec-Zone.ru › OpenJDK 17

Класс 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() throws SecurityException
Закрыть Handler и освободить все связанные ресурсы. Это также закроет целевой Handler.
Specified by:
close в классе Handler
Throws:
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет LoggingPermission("control").

setPushLevel

public void setPushLevel(Level newLevel) throws SecurityException
Установить pushLevel. После того как LogRecord скопирован во внутренний буфер, если его уровень больше или равен pushLevel, вызывается push.
Parameters:
newLevel - новое значение pushLevel
Throws:
SecurityException - если менеджер безопасности существует и у вызывающего объекта нет LoggingPermission("control").

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 - LogRecord (может быть null).
Returns:
true, если LogRecord будет зарегистрирован.

© 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.logging/java/util/logging/MemoryHandler.html

Spec-Zone.ru

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