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

Facundo Batista facundobatista en gmail.com
Vie Ago 20 17:15:20 ART 2010


Quiero que si me equivoco pasando la info que quiero loguear, que el
módulo me avise de forma útil.

Ejemplo.

Lo siguiente es trivial, pero más que nada para mostrar la manera de
hacer el setup por si quieren probarlo.

>>> import logging, sys
>>> stdout_handler = logging.StreamHandler(sys.stdout)
>>> logger = logging.getLogger('')
>>> logger.addHandler(stdout_handler)
>>> logger.error('foo')
ERROR:root:foo
foo

El logger soporta que le pase un string a formatear, y los argumentos:

>>> logger.error('foo %s', 3)
ERROR:root:foo 3
foo 3

La ventaja de esto es que si le pifio con los argumentos, no tengo una
excepción, aunque me avisa por stderr:

>>> 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?

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/



More information about the pyar mailing list