Using Logging


To use the Logging package, you'll first add a line to each class you want to log as a reference to the logging package. So, for a class MyClass, you would add the line:

 private static Log log = LogFactory.getLog(MyClass.class); 

You'll then make a call to the log whenever you want to make a log entry. The method name is simply the log level you want to make, with a message and an optional Throwable (THRowable is the superclass for all errors and exceptions in the Java language).

It's important to keep in mind that different logging toolkits have different capabilities for reporting, independent of the Logging API. Listing 9-1 shows the use of the Logging API. Assuming you are using JDK 1.4 or later, Listing 9-1 will use the JDK 1.4 logging package to log some messages to the console and some messages to disk.

Listing 9-1. Logging Example
 package com.cascadetg.ch09; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.impl.Jdk14Logger; public class LogGenerator {     // Note that you pass in an instance of this class to the     // log generator.  This allows you to find the messages     // generated by this class.     private static Log log = LogFactory.getLog(LogGenerator.class);     public static void configJDKLogger()     {         try         {             ((Jdk14Logger)log).getLogger().setLevel(                 java.util.logging.Level.ALL);             ((Jdk14Logger)log).getLogger().addHandler(                 (java.util.logging.FileHandler)Class                     .forName("java.util.logging.FileHandler")                     .newInstance());             System.out.println("Added JDK 1.4 file handler");         } catch (Exception e)         {             System.out.println("Unable to load JDK 1.4 logging.");             e.printStackTrace();         }     }     public static void main(String[] args)     {         configJDKLogger();         System.setErr(System.out);         System.out.println();         System.out.println("Test fatal log");         try         {             String foo = null;             int x = 0 / (new Integer(foo)).intValue();         } catch (Exception e)         {             log.fatal(e.getMessage(), e);         }         System.out.println();         System.out.println("Test error log");         try         {             Object foo = null;             foo.toString();         } catch (Exception e)         {             log.error(e.getMessage(), e);         }         System.out.println();         System.out.println("Test warn log");         try         {             Class.forName("com.cascadetg.NonexistantClass");         } catch (Exception e)         {             log.warn("Can't find a non-existant class!");         }         System.out.println();         System.out.println("Test info log");         log.info("Starting app!");         log.info("Quitting app!");         System.out.println();         System.out.println("Test debug log");         if (1 > 2)         {             log.debug("1 > 2 evaluated true");             if (10 % 2 == 0)                 log.debug("10 % 2 is 0");             else                 log.debug("10 % 2 is not 0");         } else         {             log.debug("1 > 2 evaluated false");         }         System.out.println();         System.out.println("Test trace log");         log.trace("Calling trace method.");         log.trace("Calling trace method.");         log.trace("Calling trace method.");         log.trace("Calling trace method.");         log.trace("Calling trace method.");         System.out.println();         System.out.println("Log test complete.");     } } 



    Apache Jakarta Commons(c) Reusable Java Components
    Real World Web Services
    ISBN: N/A
    EAN: 2147483647
    Year: 2006
    Pages: 137
    Authors: Will Iverson

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net