Apache Commons Logging

Apache Commons Logging
Developer(s) Apache Software Foundation
Stable release 1.2 / July 2015 (2015-07)
Written in Java
Operating system Cross-platform
Type Logging Tool
License Apache License 2.0
Website http://commons.apache.org/proper/commons-logging/

Apache Commons Logging (previously known as Jakarta Commons Logging (JCL)) is a Java-based logging utility and a programming model for logging and for other toolkits. It provides APIs, log implementations, and wrapper implementations over some other tools.[1][2][3]

JCL log level

The following table defines the log levels and messages in JCL, in decreasing order of severity. The left column lists the log level designation in Jand the right column provides a brief description of each log level.

Level Description
fatal Severe errors that cause premature termination. Expect these to be immediately visible on a status console.
error Other runtime errors or unexpected conditions. Expect these to be immediately visible on a status console.
warn Use of deprecated APIs, poor use of API, 'almost' errors, other runtime situations that are undesirable or unexpected, but not necessarily "wrong". Expect these to be immediately visible on a status console.
info Interesting runtime events (startup/shutdown). Expect these to be immediately visible on a console, so be conservative and keep to a minimum.
debug Detailed information on the flow through the system. Expect these to be written to logs only.
trace Most detailed information. Expect these to be written to logs only.

[3][4]

Configuration

Two basic abstractions, Log and LogFactory, are used in JCL.[3]

Example

Sample code may look like as follows:

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.");

  }
}

[4]

See also

* {{{1}}} on GitHub

References

  1. "commons logging". Apache.org. Apache. Retrieved 12 February 2016.
  2. Zavala, D.A.; Lau, Y.C. (2004). Integrating Jakarta Commons Logging with IBM WebSphere Application Server V5. IBM corporation. p. 2.
  3. 1 2 3 "contents". Apache.org. Apache. Retrieved 12 February 2016.
  4. 1 2 Iverson, W. (2005). Apache Jakarta Commons - Reusable Java Components. Crawfordsville, Indiana, USA: Pearson Education, Inc. pp. 120–122.

External links

This article is issued from Wikipedia - version of the Sunday, March 27, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.