[pyar] Haciendo que logging se banque mis errores... de forma piola
Juanjo Conti
jjconti en gmail.com
Vie Ago 20 19:07:47 ART 2010
El 20 de agosto de 2010 22:15, Facundo Batista
<facundobatista en gmail.com>escribió:
>
> 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?
Mi primer idea fue aplicarle un decorador a logger.error que haga lo que vos
querías, algo como:
def catchit(f):
def inner(*a, **kw):
try:
return f(*a, **kw)
except Exception as e:
print e, a, kw
return inner
pero cuando lo ejecuté con algo que lanzaba una excepción, vi el mismo
mensaje de error que vos. Miré el código fuente de
/usr/lib/python2.6/logging/__init__.py y efectivamente confirmé mis
sospechas: se está capturando la excepción devido al formateo incorrecto ahí
dentro y se la terminan pasando a self.handleError.
Entonces hice:
>>> def he(record):
... raise sys.exc_info()[1]
>>> stdout_handler.handleError=he
Y ahora si anda mi decorador como quiero:
>>> logger.error('a', 5)
not all arguments converted during string formatting ('a', 5) {}
El decorador es mejorable y leyendo un poco más el código fuente de logging
capás que se encuentra otra forma de hacerlo, pero por ahí debe andar la
perdiez. Tengo que salir ahora, a la vuelta miro un poco más.
Salutes!
--
Juanjo Conti
blog: http://www.juanjoconti.com.ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100821/a001d4b8/attachment.html>
More information about the pyar
mailing list