Comment rediriger stderr en Python?

Je voudrais connecter la sortie d'un script Python. J'ai essayé:

import sys

log = []

class writer(object):
    def write(self, data):
        log.append(data)

sys.stdout = writer()
sys.stderr = writer()

Maintenant, si j'ai "l'impression" quelque chose "" c'est journalisé. Mais si je fais par exemple erreur de syntaxe, dire "imprimer" quelque chose# ", il l'habitude de se connecté - il aller dans la console à la place.

Comment puis-je capture aussi les erreurs à partir de l'interpréteur Python?

J'ai vu une solution possible ici:

http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3

mais le deuxième exemple logs dans /dev/null - ce n'est pas ce que je veux. Je voudrais l'enregistrer dans une liste comme mon exemple ci-dessus ou StringIO ou tel...

Également, de préférence, je ne veux pas créer un sous-processus (et de lire le stdout et stderr dans le thread séparé).

source d'informationauteur EcirH