Java examples on Java Logging
- How do I create a rolling log files?
- How do I write log to a file?
- How do I create a custom logger Formatter?
- How do I set the Logger log level?
- How do I use logger ConsoleHandler?
- How do I limit the size of log file?
- How do I log an exception?
- How do I set the formatter of logger handlers?
- How do I obtain or create a Logger?
- How do I use Logger's MemoryHandler class?
- How do I do a conditional logging?
- How do I compare Logger Level severity?
- How do I prevent the logger send log messages to its parent logger?
- How do I check if a message is loggable?
- How do I set a filter on a logger handler?
- How do I get the current Level of a Logger?
How do I create a custom logger Formatter?
To create a custom Formatter we need to extends the Formatter
abstract class and implements the format(LogRecord record) method. In the
method then we can format the log message stored in the LogRecord to match
our need.
The Formatter class also have the getHead(Handler h) and
getTail(Handler h) which can be overrided to add a head and a tail to our log
message.
package org.kodejava.example.util.logging;
import java.util.logging.*;
import java.util.Locale;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class LogCustomFormatter {
public static void main(String[] args) {
Logger logger = Logger.getLogger(LogCustomFormatter.class.getName());
logger.setUseParentHandlers(false);
MyFormatter formatter = new MyFormatter();
ConsoleHandler handler = new ConsoleHandler();
handler.setFormatter(formatter);
logger.addHandler(handler);
logger.info("Example of creating custom formatter.");
logger.warning("A warning message.");
logger.severe("A severe message.");
}
}
class MyFormatter extends Formatter {
//
// Create a DateFormat to format the logger timestamp.
//
private static final DateFormat df = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
public String format(LogRecord record) {
StringBuilder builder = new StringBuilder(1000);
builder.append(df.format(new Date(record.getMillis()))).append(" - ");
builder.append("[").append(record.getSourceClassName()).append(".");
builder.append(record.getSourceMethodName()).append("] - ");
builder.append("[").append(record.getLevel()).append("] - ");
builder.append(formatMessage(record));
builder.append("\n");
return builder.toString();
}
public String getHead(Handler h) {
return super.getHead(h);
}
public String getTail(Handler h) {
return super.getTail(h);
}
}
Below is an output produced by the custom formatter above.
01/05/2009 06:22:09.372 - [org.kodejava.example.util.logging.LogCustomFormatter.main] - [INFO] - Example of creating custom formatter. 01/05/2009 06:22:09.374 - [org.kodejava.example.util.logging.LogCustomFormatter.main] - [WARNING] - A warning message. 01/05/2009 06:22:09.374 - [org.kodejava.example.util.logging.LogCustomFormatter.main] - [SEVERE] - A severe message.