On Sun, 2006-02-26 at 17:26 +1300, Simon Kitching wrote:
> On Sat, 2006-02-25 at 17:56 +0000, robert burrell donkin wrote:
> > it should be much more reliable to allow per TCCL configuration whilst
> > loading implementations from the class classloader. IMHO we've encourage
> > too much use of automagic configuration. suggesting that users use
> > various arrangements of jars to achieve configurations has proved a poor
> > plan. limited automagic configuration to just the class classloader
> > would be a major simplification.
>
> I don't see how that could work.
>
> If the underlying log implementation uses the TCCL to locate config
> info, then things are fairly simple; the user just disables TCCL
> functionality for JCL and lets the underlying logging system do its
> thing.
>
> But if the underlying log implementation is not TCCL-aware, and uses the
> ClassLoader which loaded the logging library to locate its config info,
> then JCL *must* load that implementation via the TCCL in order to get
> the desired behaviour when JCL is deployed in a "shared" location.
>
> And if we want to allow a webapp to redirect logging from classes it
> calls which are in a "shared" classpath into a logging lib that is *not*
> in the classpath (eg when webapp deploys log4j, container has something
> else) then again the TCCL must be used.
>
> I do agree that "magic" configuration wasn't a good idea in hindsight.
> Perhaps a commons-logging.properties file should be mandatory?
i was thinking along the lines of mandatory for actively choosing a
logging system. JCL could still make a reasonable guess but using a
properties file would become the primary recommended mechanism for
configuration.
> > i've also been toying with the idea of a Log implementation that
> > discovers which implementation to use based on the calling TCCL. when
> > debug is called, the Log implementation would be looked up. this would
> > allow a library to share a static implementation. of course the
> > configuration for each TCCL would have to be stored centrally.
>
> You mean this?
> public boolean isDebugEnabled() {
> // get tccl
> // build a (tccl, categoryname) pair
> // do a hashmap lookup using the above pair to get the real Logger
> // return realLogger.isDebugEnabled()
> }
> That will work under all circumstances, but the crippled performance
> would seem to make this an unworkable solution IMO.
i've been wondering about how big the performance impact would actually
be. it's a way of achieving true isolation for those that really need it
at a price. might encourage users to think about the trade-offs involved
a bit more than they do now.
- robert
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]