You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Java House <ja...@gmail.com> on 2008/07/05 16:27:52 UTC

static logger

Hello,

I need to log in different files based on thread group.
So I created my own RepositorySelector which supports exactly this 
scenario but in order for this to work I cannot have
static Logger logger = Logger.getLogger("X");

because the last instance that is created is setting the logger object 
and this is not the desired result.
I  have to use
Logger logger = Logger.getLogger("X");

but I have seen in so many places recomendations against such usage.
How bad is it, to NOT use static logger;

Considering the feature request would such a solution be acceptable;

thank you


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: static logger

Posted by Java House <ja...@gmail.com>.
Great suggestion!!!
I think this will keep me happy and satisfy library's recomendations.

Thanks


O/H Thorbjørn Ravn Andersen έγραψε:
> Java House skrev  den 05-07-2008 18:10:
>> O/H Thorbjørn Ravn Andersen έγραψε:
>>> Java House skrev  den 05-07-2008 16:27:
>>>> How bad is it, to NOT use static logger;
>>>
>>> By having the logger variable static it means it is only initialized 
>>> once when the class is loaded where as a non-static logger is 
>>> initialized each time you create a new object from the class.  If 
>>> you do this a lot there might be a substantial overhead which is 
>>> often unnecessary if the logger is the same for all objects.
>> I understand this.
> I believe that is why it is disrecommended.
>>> Please note that the object may be used by more than one thread so 
>>> you should be aware that this might trick your RepositorySelector.
>>>
>> But this is exactly the problem I have by using a static logger 
>> object. The logger variable gets value from the last instantiated 
>> object which is any of the threads in question. The only way to make 
>> this work is if the logger object is not static.
> Are you familiar with the ThreadLocal class?  Sounds to me that that 
> is what you might want to look into.
>
> http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html
>


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: static logger

Posted by Thorbjørn Ravn Andersen <th...@gmail.com>.
Java House skrev  den 05-07-2008 18:10:
> O/H Thorbjørn Ravn Andersen έγραψε:
>> Java House skrev  den 05-07-2008 16:27:
>>> How bad is it, to NOT use static logger;
>>
>> By having the logger variable static it means it is only initialized 
>> once when the class is loaded where as a non-static logger is 
>> initialized each time you create a new object from the class.  If you 
>> do this a lot there might be a substantial overhead which is often 
>> unnecessary if the logger is the same for all objects.
> I understand this.
I believe that is why it is disrecommended.
>> Please note that the object may be used by more than one thread so 
>> you should be aware that this might trick your RepositorySelector.
>>
> But this is exactly the problem I have by using a static logger 
> object. The logger variable gets value from the last instantiated 
> object which is any of the threads in question. The only way to make 
> this work is if the logger object is not static.
Are you familiar with the ThreadLocal class?  Sounds to me that that is 
what you might want to look into.

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html

-- 
  THorbjørn

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: static logger

Posted by Java House <ja...@gmail.com>.
O/H Thorbjørn Ravn Andersen έγραψε:
> Java House skrev  den 05-07-2008 16:27:
>> How bad is it, to NOT use static logger;
>
> By having the logger variable static it means it is only initialized 
> once when the class is loaded where as a non-static logger is 
> initialized each time you create a new object from the class.  If you 
> do this a lot there might be a substantial overhead which is often 
> unnecessary if the logger is the same for all objects.
I understand this.
> Please note that the object may be used by more than one thread so you 
> should be aware that this might trick your RepositorySelector.
>
But this is exactly the problem I have by using a static logger object. 
The logger variable gets value from the last instantiated object which 
is any of the threads in question. The only way to make this work is if 
the logger object is not static.

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: static logger

Posted by Thorbjørn Ravn Andersen <th...@gmail.com>.
Java House skrev  den 05-07-2008 16:27:
> How bad is it, to NOT use static logger;

By having the logger variable static it means it is only initialized 
once when the class is loaded where as a non-static logger is 
initialized each time you create a new object from the class.  If you do 
this a lot there might be a substantial overhead which is often 
unnecessary if the logger is the same for all objects. 

Please note that the object may be used by more than one thread so you 
should be aware that this might trick your RepositorySelector.

-- 
  Thorbjørn

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org