Pythonスクリプトのすべての出力をログに記録したいと思います。私は試した:
import sys
log = []
class writer(object):
def write(self, data):
log.append(data)
sys.stdout = writer()
sys.stderr = writer()
さて、「何かを印刷する」とログに記録されます。しかし、たとえば「print'something#」などの構文エラーを作成すると、ログに記録されません。代わりにコンソールに移動します。
Pythonインタープリターからのエラーもキャプチャするにはどうすればよいですか?
私はここで可能な解決策を見ました:
http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3
しかし、2番目の例は/ dev/nullにログインします-これは私が望むものではありません。上記の例やStringIOなどのリストにログインしたいのですが...
また、できればサブプロセスを作成したくありません(そして、そのstdoutとstderrを別々のスレッドで読み取ります)。