Hi Jon and Xinjian,

I'm also using a custom LoggerFactory and also I've customized the 
LogManager,RepositorySelector and Logger classes, in a way that, I'll always get a 
Logger instance from my CustomLogger.getLogger(), which follows the following path to 
make a new instance from CustomLoggerFactory.

CustomLogger.getLogger(name)->CustomLogManager.getLogger(name, 
customeLoggerFactory)->customRepSelector.getRepository(hierachyname).getLogger(name,customeLoggerFactory)->Hierachy(name,customeLoggerFactory).

And from my sample application, I have created two hierarchies and some 5 loggers in 
both hierarchies. And I'm able to get the different instances.

Could you please explain me on the following points;

1. Are you following a similar approach or some other?
2. Where exactly you are getting a issue here?

Waiting for your inputs, so that I can also rethink of my design.

Thanks & Regards
Sridharan

-----Original Message-----
From: Xinjian Xue [mailto:[EMAIL PROTECTED]]
Sent: Saturday, June 01, 2002 3:53 AM
To: 'Log4J Users List'; [EMAIL PROTECTED];
'[EMAIL PROTECTED]'
Subject: RE: Bug in getLogger(String, LoggerFactory)?


Jon,
I have the same problem as you reported. Have you got some answer or some
solutions? 
Thanks.
 

------------------------------------------------------------- 
Xinjian Jack Xue, Phone: 317 554 7622 

-----Original Message-----
From: Jon Wilmoth [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, May 29, 2002 10:03 AM
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: Bug in getLogger(String, LoggerFactory)?



I'm using a custom LoggerFactory and not getting the expected behavior.
After taking a look at the source, the Hiearchy class's implementation of
getLogger(String, LoggerFactory) doesn't account for the LoggerFactory
producing logger's with different names.  The CategoryKey used to cache is
always the name of the string param and not the LoggerName.  Is this a bug?
I've attached a unit test which illustrate the problem.

 

Logger getLogger(String name, LoggerFactory factory) {

    //System.out.println("getInstance("+name+") called.");

    CategoryKey key = new CategoryKey(name);    

    // Synchronize to prevent write conflicts. Read conflicts (in

    // getChainedLevel method) are possible only if variable

    // assignments are non-atomic.

    Logger logger;

    

    synchronized(ht) {

      Object o = ht.get(key);

      if(o == null) {

            logger = factory.makeNewLoggerInstance(name);

...

}

 

Jon Wilmoth

Technical Specialist

Starbucks Coffee Company

 


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

Reply via email to