Wish: Allow all log Handlers to accept the level argument

Peter Otten __peter__ at web.de
Thu May 24 07:13:43 EDT 2012


Jean-Michel Pichavant wrote:

> Peter Otten wrote:
>> Jean-Michel Pichavant wrote:
>>
>>   
>>> Fayaz Yusuf Khan wrote:
>>>     
>>>> Jean-Michel Pichavant wrote:
>>>>   
>>>>       
>>>>> Meanwhile you can shorten the code this way:
>>>>>
>>>>> root.addHandler(FileHandler('debug.log'))
>>>>> root.handlers[-1].setLevel(DEBUG)
>>>>>
>>>>>     
>>>>>         
>>>> Eh? Readability was the aim.
>>>>   
>>>>       
>>> I fail to see how it's not readable, code is short and no magic is
>>> involved provided you know about slicing list items. Anyway, to answer
>>>     
>>
>> You have to know or verify that .addHandler() appends to the .handlers
>> list, you have to check if or under which conditions
>>
>> h = SomeHandler()
>> root.addHandler(h)
>> assert h is root.handlers[-1]
>>
>> can fail. In short, if I see such a hack my trust in the author of that
>> code is significantly lowered.
>>
>>   
> I now fail to see how it's a hack. handlers is a public attribute of
> loggers.

Can you come up with a setup that makes the above assertion fail? I can 
think of three: 

- adding a handler twice
- adding a singleton handler
- adding handlers from multiple threads

> FYI
> 
>     def addHandler(self, hdlr):
>         """
>         Add the specified handler to this logger.
>         """

Subject to change. I think in current Python

>         if not (hdlr in self.handlers):
>             self.handlers.append(hdlr)

is protected by a lock.




More information about the Python-list mailing list