2012-02-03 12 views
2

stderr outとstdoutを再定義して、ロギングモジュールを使用してファイルを個別にログする方法はありますか?たとえば、stderr.logおよびstdout.logファイルはありますか?stderr outとstdoutを別々のログに再定義する方法は?

+0

ファイルに 'sys.stdout'、' sys.stderr'をリダイレクトしたいのですか? 'logging'モジュールの助けを借りてメッセージをファイルに出力したいですか? – jfs

答えて

7

あなたは、単にカスタムファイルのようなオブジェクトでsys.stdoutsys.stderrを置き換えることができます。

import sys 

sys.stdout = open('stdout.log', 'a') 
sys.stderr = open('stderr.log', 'a') 

を元に戻すには:

sys.stdout = sys.__stdout__ 
sys.stderr = sys.__stderr__ 

詳細については、sys module documentationをお読みください。

1
import sys 


class OutDevice(): 
    def write(self, s): 
     # do whatever 
     pass 

class ErrDevice(): 
    def write(self, s): 
     # do whatever 
     pass 

sys.stdout = OutDevice() 
sys.stdout = ErrDevice() 

# to restore 
sys.stdout = sys.__stdout__ 
sys.stderr = sys.__stderr__ 
関連する問題