Класс FileHandler
- java.lang.Object
-
- java.util.logging.Handler
-
- java.util.logging.StreamHandler
-
- java.util.logging.FileHandler
public class FileHandler extends StreamHandler
Простая запись логов в файлы Handler.
Класс может записывать данные в указанный файл или в набор вращающихся файлов.
При использовании вращающихся файлов, по достижении установленного лимита размера файла, он закрывается, и открывается новый файл. Последовательно более старые файлы будут именоваться добавлением "0", "1", "2" и т.д. к имени базового файла.
По умолчанию буферизация включена в библиотеках ввода-вывода, но каждый записываемый лог-запись сбрасывается в поток, когда запись завершена.
По умолчанию для форматирования используется класс XMLFormatter .
Конфигурация: Каждый FileHandler инициализируется по умолчанию используя следующие свойства конфигурации LogManager, где <handler-name> обозначает полное имя класса обработчика. Если свойства не заданы (или имеют некорректные значения), используются заданные значения по умолчанию.
- <handler-name>.level указывает уровень по умолчанию для
Handler(по умолчаниюLevel.ALL). - <handler-name>.filter указывает имя класса
Filterдля использования (по умолчанию безFilter). - <handler-name>.formatter указывает имя класса
Formatterдля использования (по умолчаниюjava.util.logging.XMLFormatter) - <handler-name>.encoding имя кодировки символов для использования (по умолчанию кодировка по умолчанию платформы).
- <handler-name>.limit указывает приблизительный максимальный размер записи (в байтах) в любом одном файле. Если значение равно нулю, лимита нет. (По умолчанию лимита нет).
- <handler-name>.count указывает количество файлов вывода, которые будут циклически использоваться (по умолчанию 1).
- <handler-name>.pattern указывает шаблон для генерации имени выходного файла. Подробности см. ниже. (По умолчанию "%h/java%u.log").
- <handler-name>.append указывает, должен ли FileHandler добавлять записи в существующие файлы (по умолчанию false).
Например, свойства для FileHandler будут следующими:
- java.util.logging.FileHandler.level=INFO
- java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
Для пользовательского обработчика, например com.foo.MyHandler, свойства будут:
- com.foo.MyHandler.level=INFO
- com.foo.MyHandler.formatter=java.util.logging.SimpleFormatter
Шаблон состоит из строки, которая включает следующие специальные компоненты, которые будут заменены во время выполнения:
- "/" разделитель пути
- "%t" временная директория системы
- "%h" значение системной переменной "user.home"
- "%g" номер генерации для различения вращающихся логов
- "%u" уникальное число для разрешения конфликтов
- "%%" преобразуется в одиночный знак процента "%"
Таким образом, например, шаблон "%t/java%g.log" с количеством 2 обычно приведет к записи лог-файлов в /var/tmp/java0.log и /var/tmp/java1.log на Solaris и в C:\TEMP\java0.log и C:\TEMP\java1.log на Windows 95.
Номера генераций следуют последовательности 0, 1, 2 и т.д.
Обычно поле "%u" уникального номера устанавливается в 0. Однако, если FileHandler пытается открыть файл и обнаруживает, что файл используется другим процессом, оно увеличивает поле уникального номера и пытается снова. Это будет повторяться, пока FileHandler не найдет имя файла, которое не используется. Если возникает конфликт и поле "%u" не указано, оно будет добавлено в конец имени файла после точки. (Это будет после любого автоматически добавленного номера генерации).
Таким образом, если три процесса пытаются записывать в fred%u.%g.txt, они могут получить fred0.0.txt, fred1.0.txt, fred2.0.txt в качестве первых файлов своих вращающихся последовательностей.
Обратите внимание, что использование уникальных идентификаторов для предотвращения конфликтов гарантированно работает только надежно при использовании локальной файловой системы.
- Since:
- 1.4
Конструкторы
| Конструктор и описание |
|---|
FileHandler() Создает обработчик по умолчанию |
FileHandler(String pattern) Инициализирует |
FileHandler(String pattern,
boolean append) Инициализирует |
FileHandler(String pattern,
int limit,
int count) Инициализирует |
FileHandler(String pattern,
int limit,
int count,
boolean append) Инициализирует |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
close() Закрывает все файлы. |
void |
publish(LogRecord record) Форматирует и публикует |
Методы, унаследованные от класса java.util.logging.StreamHandler
flush, isLoggable, setEncoding, setOutputStream Методы, унаследованные от класса java.util.logging.Handler
getEncoding, getErrorManager, getFilter, getFormatter, getLevel, reportError, setErrorManager, setFilter, setFormatter, setLevel Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
FileHandler
public FileHandler()
throws IOException,
SecurityException Создайте FileHandler по умолчанию. Он будет полностью сконфигурирован на основе свойств LogManager (или их значений по умолчанию).
- Исключение:
-
IOException- если возникли проблемы с вводом/выводом при открытии файлов. -
SecurityException- если менеджер безопасности существует и вызывающий объект не имеетLoggingPermission("control")). -
NullPointerException- если свойство pattern является пустой строкой.
FileHandler
public FileHandler(String pattern)
throws IOException,
SecurityException Инициализируйте FileHandler для записи в указанный файл.
FileHandler настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что заданный аргумент pattern используется в качестве шаблона имени файла, предел файлов устанавливается как неограниченный, а количество файлов устанавливается на 1.
Ограничений на количество записываемых данных нет, поэтому используйте с осторожностью.
- Параметры:
-
pattern- имя выходного файла - Исключение:
-
IOException- если возникли проблемы с вводом/выводом при открытии файлов. -
SecurityException- если менеджер безопасности существует и вызывающий объект не имеетLoggingPermission("control"). -
IllegalArgumentException- если pattern является пустой строкой
FileHandler
public FileHandler(String pattern,
boolean append)
throws IOException,
SecurityException Инициализируйте FileHandler для записи в указанный файл с опциональным добавлением.
FileHandler настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что заданный аргумент pattern используется в качестве шаблона имени файла, предел файлов устанавливается как неограниченный, количество файлов устанавливается на 1, а режим добавления устанавливается в соответствии с заданным аргументом append.
Ограничений на количество записываемых данных нет, поэтому используйте с осторожностью.
- Параметры:
-
pattern- имя выходного файла -
append- указывает режим добавления - Исключение:
-
IOException- если возникли проблемы с вводом/выводом при открытии файлов. -
SecurityException- если менеджер безопасности существует и вызывающий объект не имеетLoggingPermission("control"). -
IllegalArgumentException- если pattern является пустой строкой
FileHandler
public FileHandler(String pattern,
int limit,
int count)
throws IOException,
SecurityException Инициализируйте FileHandler для записи в набор файлов. Когда (приблизительно) заданный предел достигнут в одном файле, будет открыт другой файл. Вывод будет циклически переключаться между набором файлов с указанным количеством.
FileHandler настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что заданный аргумент pattern используется в качестве шаблона имени файла, предел файлов устанавливается в значение аргумента limit, а количество файлов устанавливается в заданное значение аргумента count.
Количество файлов должно быть не менее 1.
- Параметры:
-
pattern- шаблон для именования выходного файла -
limit- максимальное количество байтов для записи в любой один файл -
count- количество используемых файлов - Исключение:
-
IOException- если возникли проблемы с вводом/выводом при открытии файлов. -
SecurityException- если менеджер безопасности существует и вызывающий объект не имеетLoggingPermission("control"). -
IllegalArgumentException- еслиlimit < 0, илиcount < 1. -
IllegalArgumentException- если pattern является пустой строкой
FileHandler
public FileHandler(String pattern,
int limit,
int count,
boolean append)
throws IOException,
SecurityException Инициализируйте FileHandler для записи в набор файлов с опциональным добавлением. Когда (приблизительно) заданный предел достигнут в одном файле, будет открыт другой файл. Вывод будет циклически переключаться между набором файлов с указанным количеством.
FileHandler настраивается на основе свойств LogManager (или их значений по умолчанию), за исключением того, что заданный аргумент pattern используется в качестве шаблона имени файла, предел файлов устанавливается в значение аргумента limit, а количество файлов устанавливается в заданное значение аргумента count, и режим добавления устанавливается в соответствии с аргументом append.
Количество файлов должно быть не менее 1.
- Параметры:
-
pattern- шаблон для именования выходного файла -
limit- максимальное количество байтов для записи в любой один файл -
count- количество используемых файлов -
append- указывает режим добавления - Исключение:
-
IOException- если возникли проблемы с вводом/выводом при открытии файлов. -
SecurityException- если менеджер безопасности существует и вызывающий объект не имеетLoggingPermission("control"). -
IllegalArgumentException- еслиlimit < 0, илиcount < 1. -
IllegalArgumentException- если pattern является пустой строкой
Методы
publish
public void publish(LogRecord record)
Форматировать и опубликовать LogRecord.
- Переопределяет:
-
publishв классеStreamHandler - Параметры:
-
record- описание события логирования. Null-объект игнорируется и не публикуется
close
public void close()
throws SecurityException Закрыть все файлы.
- Переопределяет:
-
closeв классеStreamHandler - Исключение:
-
SecurityException- если менеджер безопасности существует и вызывающий объект не имеетLoggingPermission("control").
© 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.