2016-07-13 21 views
2

ファイルにインポートされた外部モジュールからでも、すべての出力をリダイレクトします。pythonのログ出力を標準出力ではなくファイルにリダイレクトする方法はありますか?

sys.stdout = open('logfile', 'a') 

外部ファイルによって行われたログのジョブがstdoutにエコーされません。

私は外部モジュールのソースコードを試してきましたが、Pythonの「ロギング」モジュールに深く編み込まれており、出力に依存しています。

また、>演算子を使用してストリームリダイレクトを使用したくありません。

sysstdout = sys.stdout 
log_file = open("your_log_file.txt","w") 
sys.stdout = log_file 
print("this will be written to message.log") 
sys.stdout = sysstdout 
log_file.close() 

をそれとも、正しいことを行うと、正しくPython's logging moduleを使用します。

答えて

0

これを試してみてください。

+0

いいえ、インポートされた外部モジュールをリダイレクトしません。外部モジュールは、独自の方法で動作するようです。 –

0
import sys 

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

print('this should be working from anywhere') 
import logging 
logging.warn('this too') 

あなたがコンソールに外部モジュールのプリントを見reassonは(loggingモジュールのデフォルトの出力ハンドラである)彼らはstderrを使用していたことだろうでした。

関連する問題