logging - string formating problems
Peter Otten
__peter__ at web.de
Mon Apr 6 07:31:43 EDT 2009
Werner F. Bruhin wrote:
> Werner F. Bruhin wrote:
>> I see the following exception with a string formating problem.
>>
>> TypeError: not all arguments converted during string formatting
>> Traceback (most recent call last):
>> File "/usr/lib/python2.5/logging/__init__.py", line 744, in emit
>> msg = self.format(record)
>> File "/usr/lib/python2.5/logging/__init__.py", line 630, in format
>> return fmt.format(record)
>> File "/usr/lib/python2.5/logging/__init__.py", line 418, in format
>> record.message = record.getMessage()
>> File "/usr/lib/python2.5/logging/__init__.py", line 288, in getMessage
>> msg = msg % self.args
>>
>> The exception does not give any information on where the problem is
>> coming from.
>>
>> I am using Python 2.5.4 but I see that in 2.6 the code is still the same.
>>
>> Any chance that getMessage could catch this exception and provide
>> better debugging information (i.e. content of msg and self.args).
> I understand that my problem is that the arguments don't match the
> format. But currently the traceback is not of any help in figuring out
> where this in my code this is.
>
> So, I suggest that line 288 in getMessage is changed from:
>
> msg = msg % self.args
>
> To something along these lines:
> if self.args:
> try:
> msg = msg % self.args
> except:
> print 'msg: %s' % msg
> print 'args: %s' % self.args
> traceback.print_exception(ei[0], ei[1], ei[2])
> return msg
I would be more interested in the origin of the problem in my code. For that
you need the complete traceback. You might be able to find it by
monkey-patching the Handler.handlError() method, e. g.:
import logging
def handleError(self, record):
raise
logging.Handler.handleError = handleError
logging.critical("", 42)
Of course you'd only do that while you are debugging the app.
Peter
More information about the Python-list
mailing list