Java Logger Example

A logger is something needed by most applications. This is an example of a logger created with the Java Logging API included with Java 7. This example creates a static object so there is only once instance for the application.

You could improve the example to specify a file name for the log. A few comments are included in the code.

BlueLogger.java

Click to View Source
   1 package com.blueskyworkshop.util;
   2 
   3 import java.io.IOException;
   4 import java.util.logging.FileHandler;
   5 import java.util.logging.Logger;
   6 import java.util.logging.SimpleFormatter;
   7   
   8 
   9 public class BlueLogger {
  10   private final static Logger log = Logger.getLogger("AppLog");
  11   private static FileHandler fileHandler;
  12   
  13   public static Logger getInstance(boolean xmlFormat){
  14     addFileHandler(log, xmlFormat);    
  15     return log;
  16   }
  17   
  18 private static void addFileHandler(Logger log, boolean xmlFormat) {
  19         try {
  20             fileHandler = new FileHandler("App.log");
  21         } catch (IOException ex) {
  22             log.severe(ex.getMessage());
  23         } catch (SecurityException ex) {
  24             log.severe(ex.getMessage());
  25         }
  26         if (!(xmlFormat)) {
  27           // If xmlFormat = true, Log file is in XML format.
  28           // If xmlFormat = false, Log file is text only.
  29           fileHandler.setFormatter(new SimpleFormatter());
  30         }
  31         log.addHandler(fileHandler);
  32     }
  33 }

Here is a test class for the logger.

BlueLoggerTest.java

Click to View Source
   1 package com.blueskyworkshop.util;
   2 
   3 import java.util.logging.Level;
   4 import java.util.logging.Logger;
   5 
   6 public class BlueLoggerTest {
   7 
   8   public static void main(String[] args) {
   9     // Use the XML Formatter
  10     Logger appLog = BlueLogger.getInstance(true);
  11     
  12     appLog.setLevel(Level.INFO); // Set the message level
  13     
  14     // Here are some sample messages
  15     appLog.severe("Severe error 01");
  16     appLog.severe("Severe error 02");
  17     appLog.warning("Warning 01");
  18     appLog.info("info message");
  19     
  20   }
  21 }

And finally here is the log file created by running the test file.

App.log

Click to View Source
   1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
   2 <!DOCTYPE log SYSTEM "logger.dtd">
   3 <log>
   4 <record>
   5   <date>2012-07-20T18:33:05</date>
   6   <millis>1342830785205</millis>
   7   <sequence>0</sequence>
   8   <logger>AppLog</logger>
   9   <level>SEVERE</level>
  10   <class>com.blueskyworkshop.util.BlueLoggerTest</class>
  11   <method>main</method>
  12   <thread>1</thread>
  13   <message>Severe error 01</message>
  14 </record>
  15 <record>
  16   <date>2012-07-20T18:33:05</date>
  17   <millis>1342830785244</millis>
  18   <sequence>1</sequence>
  19   <logger>AppLog</logger>
  20   <level>SEVERE</level>
  21   <class>com.blueskyworkshop.util.BlueLoggerTest</class>
  22   <method>main</method>
  23   <thread>1</thread>
  24   <message>Severe error 02</message>
  25 </record>
  26 <record>
  27   <date>2012-07-20T18:33:05</date>
  28   <millis>1342830785246</millis>
  29   <sequence>2</sequence>
  30   <logger>AppLog</logger>
  31   <level>WARNING</level>
  32   <class>com.blueskyworkshop.util.BlueLoggerTest</class>
  33   <method>main</method>
  34   <thread>1</thread>
  35   <message>Warning 01</message>
  36 </record>
  37 <record>
  38   <date>2012-07-20T18:33:05</date>
  39   <millis>1342830785247</millis>
  40   <sequence>3</sequence>
  41   <logger>AppLog</logger>
  42   <level>INFO</level>
  43   <class>com.blueskyworkshop.util.BlueLoggerTest</class>
  44   <method>main</method>
  45   <thread>1</thread>
  46   <message>info message</message>
  47 </record>
  48 </log>