[pyar] Haciendo que logging se banque mis errores... de forma piola

Matías Bellone matiasbellone en gmail.com
Vie Ago 20 17:38:57 ART 2010


2010/8/20 Facundo Batista <facundobatista en gmail.com>:
>>>> logger.error('foo %s', 3, 4)
> Traceback (most recent call last):
>  File "/usr/lib/python2.6/logging/__init__.py", line 776, in emit
>    msg = self.format(record)
>  File "/usr/lib/python2.6/logging/__init__.py", line 654, in format
>    return fmt.format(record)
>  File "/usr/lib/python2.6/logging/__init__.py", line 436, in format
>    record.message = record.getMessage()
>  File "/usr/lib/python2.6/logging/__init__.py", line 306, in getMessage
>    msg = msg % self.args
> TypeError: not all arguments converted during string formatting
>
>
> Lo que quiero lograr es que lo que me muestre por stderr sea algo
> útil. Al menos que me diga *cual* fue el mensaje que no pudo
> formatear, de manera que yo lo pueda buscar en mi sistema, y
> corregirlo.
>
> ¿Ideas?
>

Teóricamente lo tenés en el stacktrace, pero ahí no te lo está
mostrando porque la excepción se genera "demasiado adentro" (y la
salida dice clarito "most recent calls").

Sería cuestión de agregarle más "calls". Por lo que leí por ahí[1]
esto debería ayudar[2]

import sys
sys.tracebacklimit = 10

Sin embargo, si querés hacer algo más "tuneable" probablemente te
tengas que meter con cosas más peludas como excepthook[3] aunque no
estoy seguro cómo hace el módulo logging todo eso


[1] http://www.velocityreviews.com/forums/t618344-how-to-increase-the-depth-of-the-python-traceback.html
[2] http://docs.python.org/library/sys.html#sys.tracebacklimit
[3] http://docs.python.org/library/sys.html#sys.excepthook

Y si todo eso no funciona, entonces vas a tener que definir tu propio
formatter[4] para que cuando le pasen cosas como esa imprima algo que
te resulte útil, supongo que findCaller [5] te va a servir ahí.

[4] http://docs.python.org/library/logging.html#logging.Formatter
[5] http://docs.python.org/library/logging.html#logging.Logger.findCaller

Saludos,
Toote

PD: todo esto es de oído nomás, de pedo si uso el módulo :P



More information about the pyar mailing list