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