[Tutor] python logger

Lie Ryan lie.1296 at gmail.com
Wed Dec 28 20:01:10 CET 2011


On 12/29/2011 04:13 AM, rail shafigulin wrote:
> has anyone used python logger before? i'm trying to adapt it for my
> workplace. right now it is pretty simplistic for me. i'm trying to
> generate extra output by the LoggerAdapter.  however i'm getting errors.
> specifically i get the following message:
>
> Traceback (most recent call last):
>    File "/usr/lib/python3.1/logging/__init__.py", line 770, in emit
>      msg = self.format(record)
>    File "/usr/lib/python3.1/logging/__init__.py", line 650, in format
>      return fmt.format(record)
>    File "/usr/lib/python3.1/logging/__init__.py", line 438, in format
>      record.message = record.getMessage()
>    File "/usr/lib/python3.1/logging/__init__.py", line 308, in getMessage
>      msg = msg % self.args
> TypeError: not all arguments converted during string formatting

Please don't trim the traceback, your traceback is missing the top-most 
trace which will be the most useful in identifying your current problem.

Your problem is here:

mylogadapter.info('this is a log message', testinfo)

The first argument of the logging function is used as a format string 
for the following arguments. Since you're passing testinfo as a second 
argument to .info(), you need a placeholder in your first argument, e.g.:

mylogadapter.info('this is a log message, testinfo: %s', testinfo)

the logger will convert testinfo into a string and substitute that to %s 
in the format string.

Also, for your TestInfo class, you may want to look into 
collections.namedtuple.




More information about the Tutor mailing list