Me gustaría registrar todo el resultado de un script de Python. Intenté:¿Cómo redirigir stderr en Python?
import sys
log = []
class writer(object):
def write(self, data):
log.append(data)
sys.stdout = writer()
sys.stderr = writer()
Ahora, si "imprimo" algo, se registra. Pero si hago, por ejemplo, algún error de sintaxis, digamos "imprimir" algo # ", no se registrará, sino que irá a la consola.
¿Cómo capturo también los errores del intérprete de Python?
vi una posible solución a este problema:
http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3
pero el segundo ejemplo se registra en/dev/null - esto no es lo que quiero. Me gustaría iniciar sesión en una lista como mi ejemplo anterior o StringIO o similar ...
Además, preferiblemente no quiero crear un subproceso (y leer su stdout y stderr en un hilo separado).
Quizás el escritor también debería implementar writelines(). No olvides sys.stderr.flush() –