FileHandler (Apache Tomcat 11.0.23 API Documentation)
Description: declaration: package: org.apache.juli, class: FileHandler

# Class FileHandler

java.lang.Object
java.util.logging.Handler
org.apache.juli.FileHandler

Direct Known Subclasses:
  `AsyncFileHandler`

public class FileHandler extends Handler
Implementation of Handler that appends log messages to a file named {prefix}{date}{suffix} in a configured directory.

The following configuration properties are available:

- `directory` - The directory where to create the log file. If the path is not absolute, it is relative to the current working directory of the application. The Apache Tomcat configuration files usually specify an absolute path for this property, `${catalina.base}/logs` Default value: `logs`
- `rotatable` - If `true`, the log file will be rotated on the first write past midnight and the filename will be `{prefix}{date}{suffix}`, where date is yyyy-MM-dd. If `false`, the file will not be rotated and the filename will be `{prefix}{suffix}`. Default value: `true`
- `prefix` - The leading part of the log file name. Default value: `juli.`
- `suffix` - The trailing part of the log file name. Default value: `.log`
- `bufferSize` - Configures buffering. The value of `0` uses system default buffering (typically an 8K buffer will be used). A value of `<0` forces a writer flush upon each log write. A value `>0` uses a BufferedOutputStream with the defined value but note that the system default buffering will also be applied. Default value: `-1`
- `encoding` - Character set used by the log file. Default value: empty string, which means to use the system default character set.
- `level` - The level threshold for this Handler. See the `java.util.logging.Level` class for the possible levels. Default value: `ALL`
- `filter` - The `java.util.logging.Filter` implementation class name for this Handler. Default value: unset
- `formatter` - The `java.util.logging.Formatter` implementation class name for this Handler. Default value: `org.apache.juli.OneLineFormatter`
- `maxDays` - The maximum number of days to keep the log files. If the specified value is `<=0` then the log files will be kept on the file system forever, otherwise they will be kept the specified maximum days. Default value: `-1`.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `protected static final class`
  `FileHandler.ThreadFactory`
  Thread factory for creating log file cleanup threads.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `DEFAULT_BUFFER_SIZE`
  Default value for the log buffer size.
  `static final int`
  `DEFAULT_MAX_DAYS`
  Default value for the maximum number of days to keep log files.
  `protected final ReadWriteLock`
  `writerLock`
  Lock used to control access to the writer.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FileHandler()`
  Default constructor.
  `FileHandler(String directory, String prefix, String suffix)`
  Constructor with directory, prefix, and suffix.
  `FileHandler(String directory, String prefix, String suffix, Integer maxDays)`
  Constructor with directory, prefix, suffix, and maxDays.
  `FileHandler(String directory, String prefix, String suffix, Integer maxDays, Boolean rotatable, Integer bufferSize)`
  Constructor with all configuration options.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Close the currently open log file (if any).
  `protected void`
  `closeWriter()`
  Close the currently open log file writer.
  `void`
  `flush()`
  Flush the writer.
  `void`
  `open()`
  Open the new log file for the date specified by `date`.
  `protected void`
  `openWriter()`
  Open the writer for the current log file.
  `void`
  `publish(LogRecord record)`
  Format and publish a `LogRecord`.

  ### Methods inherited from class Handler

  `getEncoding, getErrorManager, getFilter, getFormatter, getLevel, isLoggable, reportError, setEncoding, setErrorManager, setFilter, setFormatter, setLevel`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### DEFAULT_MAX_DAYS

    public static final int DEFAULT_MAX_DAYS
    Default value for the maximum number of days to keep log files. A value of -1 means unlimited.
    See Also:
      - Constant Field Values

  - ### DEFAULT_BUFFER_SIZE

    public static final int DEFAULT_BUFFER_SIZE
    Default value for the log buffer size. A value of -1 forces a flush on each write.
    See Also:
      - Constant Field Values

  - ### writerLock

    protected final ReadWriteLock writerLock
    Lock used to control access to the writer.

- ## Constructor Details

  - ### FileHandler

    public FileHandler()
    Default constructor. Uses LogManager properties for all configuration.

  - ### FileHandler

    public FileHandler(String directory, String prefix, String suffix)
    Constructor with directory, prefix, and suffix.
    Parameters:
      `directory` - The directory where log files are created
      `prefix` - The leading part of the log file name
      `suffix` - The trailing part of the log file name

  - ### FileHandler

    public FileHandler(String directory, String prefix, String suffix, Integer maxDays)
    Constructor with directory, prefix, suffix, and maxDays.
    Parameters:
      `directory` - The directory where log files are created
      `prefix` - The leading part of the log file name
      `suffix` - The trailing part of the log file name
      `maxDays` - The maximum number of days to keep log files

  - ### FileHandler

    public FileHandler(String directory, String prefix, String suffix, Integer maxDays, Boolean rotatable, Integer bufferSize)
    Constructor with all configuration options.
    Parameters:
      `directory` - The directory where log files are created
      `prefix` - The leading part of the log file name
      `suffix` - The trailing part of the log file name
      `maxDays` - The maximum number of days to keep log files
      `rotatable` - Whether the log file is rotatable
      `bufferSize` - The log buffer size

- ## Method Details

  - ### publish

    public void publish(LogRecord record)
    Format and publish a `LogRecord`.
    Specified by:
      `publish` in class `Handler`
    Parameters:
      `record` - description of the log event

  - ### close

    public void close()
    Close the currently open log file (if any).
    Specified by:
      `close` in class `Handler`

  - ### closeWriter

    protected void closeWriter()
    Close the currently open log file writer.

  - ### flush

    public void flush()
    Flush the writer.
    Specified by:
      `flush` in class `Handler`

  - ### open

    public void open()
    Open the new log file for the date specified by `date`.

  - ### openWriter

    protected void openWriter()
    Open the writer for the current log file.