Logging to zero or more destinations

Robert Kern robert.kern at gmail.com
Tue Jul 8 18:04:40 EDT 2008


Rob Wolfe wrote:
> samwyse <samwyse at gmail.com> writes:

>> The only way that I can see for all three statements to be consistent
>> is that the root logger starts with an empty list of handlers, and
>> doesn't instantiate a default handler until either
>> logging.basicConfig()  is called, 
> 
> That is correct.
> 
>> or the first time that a message is
>> logged.  
> 
> That is not correct. The list of handlers is empty until `basicConfig`
> or explicit `addHandler` is called.
> 
>> This would also seem to imply that there's no way to use an
>> empty handler list (say, if you want to suppress all logging), because
>> the root handler will instantiate a handler for you.  Is this correct?
> 
> No. Consider this:
> 
>>>> import logging
>>>> logging.root.warning('error message')
> No handlers could be found for logger "root"
>>>> logging.root.warning('error message')
> 
> Note only one warning message.

Ah, right. It is the module-level functions logging.warn(), etc. that invoke 
basicConfig() if no handler is present.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list