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 -- http://mail.python.org/mailman/listinfo/python-list