Protokollieren Sie Syntaxfehler und nicht erfasste Ausnahmen für einen Python-Unterprozess und drucken Sie sie auf dem Terminal aus
Ich habe versucht, ein Programm zu schreiben, das nicht erfasste Ausnahmen und Syntaxfehler für einen Unterprozess protokolliert. Einfach richtig? Pfeife einfachstderr
an den richtigen Ort.
jedochDer Unterprozess ist ein anderes Python-Programm - ich werde es nennentest.py
- Das muss so laufen, als würden seine Ausgaben / Fehler nicht erfasst. Das heißt, das Ausführen des Logger-Programms muss so aussehen, als ob der Benutzer es gerade ausgeführt hatpython test.py
wie normal.
Eine weitere Komplikation des Problems istdas Problem Dasraw_input
wird tatsächlich an gesendetstderr
obreadline
ist nicht benutzt. Leider kann ich nicht einfachimport readline
, da ich keine Kontrolle über die Dateien habe, die mit meinem Fehlerprotokoll ausgeführt werden.
Anmerkungen:
Ich bin ziemlich beschränkt auf die Maschinen, auf denen dieser Code ausgeführt wird. Ich kann nicht installierenpexpect
oder bearbeiten Sie die*customize.py
Dateien (da das Programm von vielen verschiedenen Benutzern ausgeführt wird). Ich habe wirklich das Gefühl, dass es trotzdem eine stdlib-Lösung geben sollte ...Dies muss nur auf Macs funktionieren.Die Motivation dafür ist, dass ich Teil eines Teams bin, das die Fehler untersucht, die neue Programmierer bekommen.Was ich versucht habeIch habe die folgenden Methoden ohne Erfolg versucht:
nur mittee
wie in der frageWie schreibe ich stderr in eine Datei, während ich "tee" mit einer Pipe verwende? (konnte nicht produzierenraw_input
Eingabeaufforderungen); Python-Implementierungen vontee
dass ich in mehreren SO Fragen gefunden hatte ähnliche Problemeüberschreibensys.excepthook
(Fehler beim Ausführen eines Unterprozesses)Diese Frage ist Die beste Antwort schien vielversprechend, konnte aber nicht angezeigt werdenraw_input
Eingabeaufforderungen richtig.dasProtokollierungsmodul Scheint nützlich, um tatsächlich in eine Protokolldatei zu schreiben, scheint aber nicht auf den Kern des Problems zu kommenbenutzerdefinierte stderr-leserendloses googeln