Класс 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(Handler target,
int size,
Level pushLevel) |
Создать |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрыть |
void |
flush() |
Вызывает сброс в целевом |
Level |
getPushLevel() |
Получить |
boolean |
isLoggable(LogRecord record) |
Проверить, будет ли этот |
void |
publish(LogRecord record) |
Сохранить |
void |
push() |
Отправить любой буферизованный вывод в целевой |
void |
setPushLevel(Level newLevel) |
Установить |
Методы, объявленные в классе 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".
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, 2020, 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/11/docs/api/java.logging/java/util/logging/MemoryHandler.html