HTTP logging

Jean-Michel Pichavant jeanmichel at sequans.com
Mon Feb 20 18:07:49 CET 2012


Arnaud Delobelle wrote:
> On 20 February 2012 16:03, Jason Friedman <jason at powerpull.net> wrote:
>   
>> I am logging to HTTP:
>>
>> logger.addHandler(logging.handlers.HTTPHandler(host, url))
>>
>> Works great, except if my HTTP server happens to be unavailable:
>>
>> socket.error: [Errno 111] Connection refused
>>
>> Other than wrapping all my logger.log() calls in try/except blocks, is
>> there a way to skip logging to the HTTPhandler if the HTTP server is
>> unavailable?
>>     
>
> Here's one: subclass HTTPHandler :)
>
>   
short answer:

use

 > logging.raiseExceptions = 0


long and incomplete answer:

log calls should not raise any exception.

http://docs.python.org/library/logging.html#handler-objects

"Handler.handleError(record)
This method should be called from handlers when an exception is 
encountered during an emit() call. By default it does nothing, which 
means that exceptions get silently ignored. This is what is mostly 
wanted for a logging system - most users will not care about errors in 
the logging system, they are more interested in application errors. You 
could, however, replace this with a custom handler if you wish. The 
specified record is the one which was being processed when the exception 
occurred"
"

However, I looked into the code and find out an (undocumented ?) 
attribute of the logging module : raiseException which value is set to 1 
by default (python 2.5.2 logging.__version__ < '0.5.0.2' > ).

When set to 1, handlerError print the traceback.

This has been probably fixed in recent version of the module since the 
handleError doc does not reference raiseException anymore.

JM



More information about the Python-list mailing list