At 17:48 15.02.2001 +0100, you wrote:


>Kitching Simon wrote:
>> 
>> Hi Jim,
>> 
>> Nice to see there *are* people using custom
>> Priorities .. I thought I was alone for a while!
>> 
>> Just a few comments:
>> 
>> (a)
>> with this approach, the custom category needs
>> to be used like this:
>> 
>> TraceableCategory cat = (TraceableCategory)
>>    TraceableCategory.getInstance("catname");
>> cat.trace("msg");
>> 
>> ie a cast is needed. This is not a big deal,
>> but is a minor nuisance
>
>What I've done is define a method other than getInstance which returns
>the appropriate subclass, e.g. getTrace below:
>
>  public class Trace extends Category {
>    public static Category getInstance(String name) {
>        return Category.getInstance(name, traceFactory);
>    }
>    public static Trace getTrace(String name) {
>        return (Trace) getInstance(name);
>    }
>    ...
>  }

That's a good idea. 

>> (b)
>> in your xml config file, you didn't specify a
>> custom CategoryFactory. Doesn't this mean
>> that the above cast to TraceableCategory
>> will throw an exception, because the
>> Category object was actually created as a
>> normal org.apache.log4j.Category?
>> 
>> Your example shows how to explicitly set
>> the category class for root, but it isn't feasable
>> to set an explicit category class for every
>> category...
>> 
>> I think it *might* be ok if you don't try to
>> set any filtering level on categories in the
>> config file, as then the only category created
>> is the root category, but as soon as category-
>> specific config features are specified, the
>> Configurator needs to create the Category
>> object, and will use the default factory unless
>> an alternative "global" factory has been defined.
>
>This is a pain but it's usually possible to avoid configuring the exact
>Category that one is interested in, e.g. if your code needs a Trace
>Category for com.example.foo.bar.MyClass then instead of configuring
>MyClass you configure com.example.foo.bar. The config code will then
>create a Category for that node in the hierarchy and your app code will
>create a Trace object for com.example.foo.bar.MyClass.

True.

>A real solution would be to make it possible to specify the
>CategoryFactory per category.

It is possible to specify a CategoryFactory per category with the DOMConfigurator. 
Actually. it is not possible to specify a default factory with the DOMConfigurator as 
is the case with PropsConfigurator. Just my 2c. Ceki


----
Ceki Gülcü           e-mail: [EMAIL PROTECTED] (preferred)
av. de Rumine 5              [EMAIL PROTECTED]
CH-1005 Lausanne          
Switzerland            Tel: ++41 21 351 23 15


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to