Spec-Zone.ru › OpenJDK 25

Класс FileHandler

java.lang.Object
java.util.logging.Handler
java.util.logging.StreamHandler
java.util.logging.FileHandler
public class FileHandler extends StreamHandler
Простое ведение журналов в файле Handler.

FileHandler может записывать данные в указанный файл или в набор файлов, которые чередуются.

При использовании набора файлов, когда размер каждого файла достигает заданного предела, он закрывается, заменяется следующим в последовательности, и открывается новый файл. Имена более старых файлов формируются добавлением к базовому имени файла «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).
  • <handler-name>.maxLocks задает максимальное количество блокировок, которые FileHandler может удерживать одновременно (по умолчанию — 100).

Например, свойства для 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" — уникальный номер для устранения конфликтов
  • "%%" — преобразуется в один знак процента "%"
Если поле "%g" не указано, а количество файлов больше единицы, номер поколения будет добавлен в конец сформированного имени файла после точки.

Например, шаблон "%t/java%g.log" с количеством файлов 2 обычно приводит к тому, что файлы журналов в Solaris будут записываться в /var/tmp/java0.log и /var/tmp/java1.log, а в Windows 95 — в C:\TEMP\java0.log и C:\TEMP\java1.log

Номера поколений следуют в последовательности 0, 1, 2 и т. д.

Обычно уникальному полю "%u" присваивается значение 0. Однако если FileHandler пытается открыть файл и обнаруживает, что он уже используется другим процессом, он увеличивает значение уникального поля и повторяет попытку. Это будет повторяться, пока FileHandler не найдет имя файла, которое в данный момент не используется. Если возник конфликт, а поле "%u" не было указано, оно будет добавлено в конец имени файла после точки. (После номера поколения, добавленного автоматически, если он есть.)

Например, если три процесса пытаются записывать данные в fred%u.%g.txt, они могут использовать fred0.0.txt, fred1.0.txt и fred2.0.txt в качестве первых файлов в своих последовательностях чередования.

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

Начиная с версии:
1.4

Краткое описание конструкторов

Конструктор Описание
FileHandler()
Создает FileHandler по умолчанию.
FileHandler(String pattern)
Инициализирует FileHandler для записи в указанный файл.
FileHandler(String pattern, boolean append)
Инициализирует FileHandler для записи в указанный файл с необязательным добавлением данных в конец.
FileHandler(String pattern, int limit, int count)
Инициализирует FileHandler для записи в набор файлов.
FileHandler(String pattern, int limit, int count, boolean append)
Инициализирует FileHandler для записи в набор файлов с необязательным добавлением данных в конец.
FileHandler(String pattern, long limit, int count, boolean append)
Инициализирует FileHandler для записи в набор файлов с необязательным добавлением данных в конец.

Краткое описание методов

Модификатор и тип Метод Описание
void close()
Закрывает все файлы.
void publish(LogRecord record)
Форматирует и публикует LogRecord.

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

flush, isLoggable, setEncoding, setOutputStream

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

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

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

FileHandler

public FileHandler() throws IOException
Создает FileHandler по умолчанию. Конфигурация полностью определяется свойствами LogManager (или их значениями по умолчанию).
Вызывает исключение:
IOException — если при открытии файлов возникли проблемы ввода-вывода.
NullPointerException — если свойство шаблона содержит пустую строку.

FileHandler

public FileHandler(String pattern) throws IOException
Инициализирует FileHandler для записи в указанный файл.

Конфигурация FileHandler определяется свойствами LogManager (или их значениями по умолчанию), за исключением того, что в качестве шаблона имени файла используется заданный аргумент pattern, ограничение размера файла не устанавливается, а количество файлов задается равным единице.

Объем записываемых данных не ограничен, поэтому используйте этот конструктор с осторожностью.

Параметры:
pattern — имя выходного файла
Вызывает исключение:
IOException — если при открытии файлов возникли проблемы ввода-вывода.
IllegalArgumentException — если шаблон представляет собой пустую строку

FileHandler

public FileHandler(String pattern, boolean append) throws IOException
Инициализирует FileHandler для записи в указанный файл с необязательным добавлением данных в конец.

Конфигурация FileHandler определяется свойствами LogManager (или их значениями по умолчанию), за исключением того, что в качестве шаблона имени файла используется заданный аргумент pattern, ограничение размера файла не устанавливается, количество файлов задается равным единице, а режим добавления данных в конец задается аргументом append.

Объем записываемых данных не ограничен, поэтому используйте этот конструктор с осторожностью.

Параметры:
pattern — имя выходного файла
append — задает режим добавления данных в конец
Вызывает исключение:
IOException — если при открытии файлов возникли проблемы ввода-вывода.
IllegalArgumentException — если шаблон представляет собой пустую строку

FileHandler

public FileHandler(String pattern, int limit, int count) throws IOException
Инициализирует FileHandler для записи в набор файлов. Когда в один файл будет записано (приблизительно) указанное количество данных, откроется другой файл. Вывод будет циклически переключаться между набором из count файлов.

Конфигурация FileHandler определяется свойствами LogManager (или их значениями по умолчанию), за исключением того, что в качестве шаблона имени файла используется заданный аргумент pattern, ограничение размера файла задается аргументом limit, а количество файлов — аргументом count.

Значение count должно быть не меньше 1.

Параметры:
pattern — шаблон для формирования имени выходного файла
limit — максимальное количество байтов для записи в один файл
count — количество используемых файлов
Вызывает исключение:
IOException — если при открытии файлов возникли проблемы ввода-вывода.
IllegalArgumentException — если limit < 0 или count < 1.
IllegalArgumentException — если шаблон представляет собой пустую строку

FileHandler

public FileHandler(String pattern, int limit, int count, boolean append) throws IOException
Инициализирует FileHandler для записи в набор файлов с необязательным добавлением данных в конец. Когда в один файл будет записано (приблизительно) указанное количество данных, откроется другой файл. Вывод будет циклически переключаться между набором из count файлов.

Конфигурация FileHandler определяется свойствами LogManager (или их значениями по умолчанию), за исключением того, что в качестве шаблона имени файла используется заданный аргумент pattern, ограничение размера файла задается аргументом limit, количество файлов — аргументом count, а режим добавления данных в конец задается аргументом append.

Значение count должно быть не меньше 1.

Параметры:
pattern — шаблон для формирования имени выходного файла
limit — максимальное количество байтов для записи в один файл
count — количество используемых файлов
append — задает режим добавления данных в конец
Вызывает исключение:
IOException — если при открытии файлов возникли проблемы ввода-вывода.
IllegalArgumentException — если limit < 0 или count < 1.
IllegalArgumentException — если шаблон представляет собой пустую строку

FileHandler

public FileHandler(String pattern, long limit, int count, boolean append) throws IOException
Инициализирует FileHandler для записи в набор файлов с необязательным добавлением данных в конец. Когда в один файл будет записано (приблизительно) указанное количество данных, откроется другой файл. Вывод будет циклически переключаться между набором из count файлов.

Конфигурация FileHandler определяется свойствами LogManager (или их значениями по умолчанию), за исключением того, что в качестве шаблона имени файла используется заданный аргумент pattern, ограничение размера файла задается аргументом limit, количество файлов — аргументом count, а режим добавления данных в конец задается аргументом append.

Значение count должно быть не меньше 1.

Параметры:
pattern — шаблон для формирования имени выходного файла
limit — максимальное количество байтов для записи в один файл
count — количество используемых файлов
append — задает режим добавления данных в конец
Вызывает исключение:
IOException — если при открытии файлов возникли проблемы ввода-вывода.
IllegalArgumentException — если limit < 0 или count < 1.
IllegalArgumentException — если шаблон представляет собой пустую строку
Начиная с версии:
9

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

publish

public void publish(LogRecord record)
Форматирует и публикует LogRecord.
Переопределяет:
publish в классе StreamHandler
Параметры:
record — описание события журнала. Запись со значением null игнорируется без уведомления и не публикуется

close

public void close()
Закрывает все файлы.
Переопределяет:
close в классе StreamHandler

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/FileHandler.html

Spec-Zone.ru

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