Rotating File Handler

In this post under logging, I will show how to create a rotating file handler.

A rotating file handler create a set of files, with each file having a count in the file name indicating the total number of files created. Each file has a size limit, which when reached a new file is created or existing file is overriden. They will be a limit on the number of files that can be created. Once the limit is reached, new log messages are inserted into existing files in order.

We are create a rotating file handler using the below two constructor


public FileHandler(String pattern, int limit, int count) throws IOException, SecurityException

public FileHandler(String pattern, int limit, int count, boolean append) throws IOException, SecurityException

where
    pattern - the pattern for naming the output file
    limit - the maximum number of bytes to write to any one file
    count - the number of files to use
    append - specifies append mode

Below is an example of how to create a rotating file handler

Main Class


1  package logging;
2  
3  import java.io.IOException;
4  import java.util.logging.FileHandler;
5  import java.util.logging.Level;
6  import java.util.logging.Logger;
7  
8  public class LoggingDemo9 {
9   public static void main(String[] args) throws IOException {
10      Logger logger = Logger.getLogger("logger");
11      FileHandler fileHandler = null;
12      try {
13          fileHandler = new FileHandler("java.log", 300000, 3, true);
14          fileHandler.setLevel(Level.INFO);
15          
16          logger.addHandler(fileHandler);
17          for(int i = 0; i < 2000; i++) {
18              logger.info("Log message: " + i);
19          }
20          
21          logger.removeHandler(fileHandler);
22      } finally {
23          fileHandler.close();
24      }
25  }
26 }

At line 13 we create an instance of FileHandler with file name as “java.log”, with limit on size of each file to 300KB, and maximum number of files to created will be 3.

So when the example is run it creates three files with below names, if the limit of java.log.2 reaches 300KB, the existing file java.log.0 is overridden with new log messages, since the limit on the number of files to be created is 3.
java.log.0
java.log.1
java.log.2


Check these products on Amazon

Leave a Reply