13.3. Adding Logging to Your Own Classes
Problem
You want to log messages of varying severity from your own classes.
Solution
Use Commons Logging within your own classes, as shown in Example 13-3.
Example 13-3. Using Commons Logging in a custom class
package com.fooware.barapp;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyClazz {
private static Log log = LogFactory.getLog(MyClazz.class);
public void doSomething( ) {
log.debug("About to do something.");
try {
//call something that throws an exception
} catch (Exception e) {
log.error("An exception occured doing something.", e);
}
log.info("Successfully did something.");
}
}Discussion
Any critical application should use logging of some kind. Relying on
System.out.println( ) limits logging flexibility
and can significantly downgrade application performance. You can roll
your own logging mechanism, as many shops have done, or you can take
advantage of frameworks and APIs such as Log4J and Commons Logging
that make logging easy.
The Solution uses the Commons Logging API. Messages are logged to a logging category. If you use the class name as the category, you can control logging at the class level. In addition, you can use the package name as a hierarchy. The Commons Logging API supports the following logging levels in increasing order of severity:
Trace
Debug
Info
Warn
Error
Fatal
Using Commons Logging gives you the flexibility of choosing a logging implementation as desired. If you were using ...