logging = logging.getLogger(__name__)

Jean-Michel Pichavant jeanmichel at sequans.com
Tue Jun 15 12:18:58 EDT 2010


genkuro wrote:
> On Jun 15, 8:49 am, Mark Lawrence <breamore... at yahoo.co.uk> wrote:
>   
>> On 15/06/2010 16:35, genkuro wrote:
>>
>>     
>>> Newbie here.  I may be missing something obvious, in which case,
>>> please feel free to berate and laugh at me.
>>>       
>>> Here's a dubious line of code:
>>> logging = logging.getLogger(__name__)
>>>       
>>> How can I refer to the original logging package "logging" after this
>>> statement is run?  Specifically, I'm trying to add a log handler with
>>> logging.addHandler(x) and it is of course failing.
>>>       
>>> Thanks,
>>> Brian
>>>       
>> Change it to something like logger = logging.getLogger(__name__), then
>> logger.addHandler(x).  If you don't do this, your logging shadows the
>> logging module so you won't get very far.
>>
>> HTH.
>>
>> Mark Lawrence
>>     
>
> Hi Mark -
>
> I thought that would be the answer.
>
> I asked because I'm working with a framework where logging is
> similarly renamed in almost every file.  The framework is under
> development so refactoring is an option.
>
> I'm coming to Python from Java.  I'm still getting a feel for scoping
> limits.  For the sake of curiosity, is there another way to refer to a
> package besides name?
>
> Thanks,
> Brian
>
>   
Yes, there is another way but you don't want to do that. As mentioned 
before, use a proper name (logger is a good candidate).

import sys
print sys.modules['logging']
<module 'logging' from '/usr/lib/python2.5/logging/__init__.pyc'>

pylint usually tells you when you're shadowing some standard package, I 
would advise to use this tool (requires some tuning though).

JM



More information about the Python-list mailing list