Confused about logger config from within Python (3)

Roy Smith roy at
Sun Dec 30 02:08:14 CET 2012

In article <mailman.1455.1356826759.29569.python-list at>,
 Terry Reedy <tjreedy at> wrote:

> On 12/29/2012 8:48 AM, Roy Smith wrote:
> > In article <50de7a0a$0$29967$c3e8da3$5496439d at>,
> >   Steven D'Aprano <steve+comp.lang.python at> wrote:
> >
> >> In Python 3.2 and 3.3, the message about no handlers is not printed,
> >> which is an interesting difference. (Somebody who knows more about the
> >> logging package than I do might be able to state why that difference.)
> >
> > I hope that means that has finally
> > been fixed :-)
> I added an update ;-).
> If Vijay wanted the message to be a warning rather than an exception, 
> the warnings module and mechanism could have been used (once it was 
> available -- I am not sure when that was). But I think a default handler 
> is even better.

Having a default handler is clearly a good fix.

> I also hope you appreciate that Vijay has stuck with maintenance and 
> upgrade of the module for nearly a decade now.


BTW, I recently discovered a truly awesome thing about logging and 
nosetests.  Apparently, nose attaches a hander to the root logger at 
debug level and buffers anything that gets sent there.  If a test fails, 
it prints anything that logger captured.  So, for example (intentionally 
breaking one of my tests):

-------------------- >> begin captured logging << --------------------
requests.packages.urllib3.connectionpool: INFO: Starting new HTTP 
connection (1):
requests.packages.urllib3.connectionpool: DEBUG: "GET 
/foo:80/api/v2/?format=json ('HTTP/1.1',)" 404 None
--------------------- >> end captured logging << ---------------------

This rocks!

More information about the Python-list mailing list