Obtener un resultado de error de módulo de 'registro' más útil en python

Estoy usando lalogger módulo de python (python versión 3.x, pero no debería importar) y noté que un error en una cadena de formato se informa como tal:

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: %d format: a number is required, not str

Como puede ver, no se menciona dónde estaba el error real (en mi código). Por cierto, esto es lo que estaba mal en mi código:

logging.debug('This is a string %d', str(foo))

Cambiando el%d in%s resuelve el problema

Mi pregunta es: ¿cómo obtengo información un poco más útil delogging módulo de salida? ¿Tengo que escribir mi propio registrador? ¿Dónde modifico lalogger módulo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta