Класс MemoryHandler
public class MemoryHandler extends Handler
Handler, которая буферизует запросы в кольцевом буфере в памяти. Обычно она Handler просто хранит входящие LogRecords в свой буфер памяти и удаляет более старые записи. Эта буферизация очень дешёвая и избегает затрат на форматирование. При определённых условиях срабатывания MemoryHandler отправит содержимое текущего буфера в целевой Handler, который, как правило, опубликует их во внешний мир.
Существует три основные модели для запуска отправки буфера:
- Входящий
LogRecordимеет тип, превышающий предварительно определённый уровень,pushLevel. - Внешний класс явно вызывает метод
push. - Подкласс переопределяет метод
logи сканирует каждый входящийLogRecordи вызываетpush, если запись соответствует определённым критериям.
Конфигурация: По умолчанию каждый MemoryHandler инициализируется с помощью следующих свойств конфигурации LogManager, где <handler-name> относится к полному имени класса обработчика. Если свойства не определены (или имеют некорректные значения), используются указанные значения по умолчанию. Если значение по умолчанию не определено, выбрасывается исключение RuntimeException.
- <имя_обработчика>.уровень указывает уровень для
Handler(по умолчаниюLevel.ALL). - <имя_обработчика>.фильтр указывает имя класса
Filterдля использования (по умолчанию нетFilter). - <имя_обработчика>.размер определяет размер буфера (по умолчанию 1000).
- <имя_обработчика>.отправка определяет
pushLevel(по умолчаниюlevel.SEVERE). - <имя_обработчика>.цель указывает имя целевого класса
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 |
Создать MemoryHandler. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрыть Handler и освободить все связанные ресурсы. |
void |
flush() |
Вызывает сброс в целевом Handler. |
Level |
getPushLevel() |
Получить pushLevel. |
boolean |
isLoggable |
Проверить, будет ли этот Handler фактически регистрировать данную LogRecord в своём внутреннем буфере. |
void |
publish |
Сохранить LogRecord во внутреннем буфере. |
void |
push() |
Отправить любой буферизованный вывод в целевой Handler. |
void |
setPushLevel |
Установить pushLevel. |
Методы, объявленные в классе java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel
Подробное описание конструкторов
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 не записывается. Для этого требуется "отправка".
- 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 к "отправке" содержимого буфера. Он вернёт false, если LogRecord равно null.
- Overrides:
-
isLoggableв классеHandler - Parameters:
-
record-LogRecord(может быть null). - Returns:
- true, если
LogRecordбудет зарегистрировано.
© 1993, 2023, 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/21/docs/api/java.logging/java/util/logging/MemoryHandler.html