You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Berin Loritsch <bl...@apache.org> on 2001/11/01 16:13:42 UTC

Re: Logging change for Avalon Framework

Berin Loritsch wrote:
> 
> > > Please let me know ASAP.  If there are no issues, then I can
> > > get busy preparing a new release of Avalon Framework.  If the impact
> > > is much worse than anticipated I need to know.  That way I can back
> > > out the changes or add a different Loggable equivalent interface
> > > that uses the new Logger interface.
> > >
> > > If all goes well, there should be little to no impact on your
> > > projects.

All did not go well, and the change proved more extensive than I originally
thought.  In order to provide what I originally desired, with the least amount
of impact, I deprecated Loggable.  The new interface of choice is:

interface org.apache.avalon.framework.logger.LogEnabled
{
    void enableLogging( org.apache.avalon.framework.logger.Logger logger );
}

By using the LogEnabled interface, you may use the included adapters for
Log4J, LogKit, or JDK 1.4 logging.

There are some things that I do need to explain regarding the side affects
of using the LogEnabled interface:

1)  The Logger you have is Opaque--it cannot be downcast to the originating
    logger type.  This is a design goal, but if you need to work with Loggable
    components in your system, you must use the Loggable interface yourself.
    Otherwise there is no way to get the org.apache.log.Logger from the one
    supplied to you--nor can you assume that the Logger you have been given
    is a LogKit logger (IOW, you can change logging frameworks without touching
    the rest of your code).

2)  If you are using JDK 1.4 logging, there is no direct mapping between the
    priorities we define and what JDK 1.4 defines.  We wanted to remain as
    consistent as possible, so below is the mapping:

    * debug()      -> FINE
    * info()       -> INFO
    * warn()       -> WARNING
    * error()      -> SEVERE
    * fatalError() -> SEVERE

    While it would have been possible to change error() to WARNING, warn()
    to INFO, and info to CONFIG, that would have been confusing when you look
    at the log files.

3)  ExcaliburComponentManager and the Pool implementations must remain Loggable
    instead of LogEnabled.  It was not possible to upgrade them without breaking
    backwards compatibility.

-- 

"Those who would trade liberty for
 temporary security deserve neither"
                - Benjamin Franklin

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>