logging - string formating problems

Werner F. Bruhin werner.bruhin at free.fr
Mon Apr 6 05:11:37 EDT 2009


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

Werner





More information about the Python-list mailing list