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