logging
Create custom Formatter for Logger handler
In this example we shall show you how to create custom Formatter for a Logger‘s Handler. The Handler usually uses a Formatter associated with it to format LogRecords. The Formatter takes a LogRecord and converts it to a string. LogRecord objects are used to pass logging requests between the logging framework and individual log Handlers. To create a custom Formatter to format LogRecords one should perform the following steps:
- Create a new CustomFormatter class that extends the Formatter and overrides its
format(LogRecord record)method. In the example, the customFormatter uses a StringBuffer to append a prefix and a suffix to the record, using theappend(String str)API method of the StringBuffer and returns a String representation of the LogRecord. - Create a new Logger instance.
- Create a FileHandler for the Logger to write to a specific file, and add it to the Logger with
addHandler(Handler handler)API method. - Set the custom formatter to the handler with
setFormatter(Formatter newFormatter)API method, to format its records,
as described in the code snippet below.
package com.javacodegeeks.snippets.core;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
public class CreateCustomFormatterForLoggerHandler {
public static void main(String[] args) throws Exception {
boolean append = false;
FileHandler handler = new FileHandler("default.log", append);
Logger logger = Logger.getLogger("com.javacodegeeks.snippets.core");
logger.addHandler(handler);
handler.setFormatter(new MyCustomFormatter());
logger.info("custom formatter - info message");
}
private static class MyCustomFormatter extends Formatter {
@Override
public String format(LogRecord record) {
StringBuffer sb = new StringBuffer();
sb.append("Prefixn");
sb.append(record.getMessage());
sb.append("Suffixn");
sb.append("n");
return sb.toString();
}
}
}
Output:
Nov 19, 2011 4:11:51 PM com.javacodegeeks.snippets.core.CreateCustomFormatterForLoggerHandler main
INFO: custom formatter - info message
default.log
Prefix custom formatter - info message Suffix
This was an example of how to create custom Formatter for Logger handler in Java.
