私は研究ツールを書いていますが、最近は "print"ステートメントの使用からPythonに組み込まれたロガー機能の使用に切り替えました。これは私が推論したところでは、出力をファイルにダンプするオプションと、スクリーンにダンプするオプションをユーザーに与えることができます。外部アプリケーションからのログ
これまでのところとても良いです。私のコードのPythonにある部分は、 "logger.info"と "logger.error"を使って画面とファイルの両方にダンプします。 "logger"はモジュール全体のロガーです。この部分は魅力のように機能します。
しかし、私はいくつかの点で、 "subprocess.call"を使ってシェルを通して実行可能ファイルを実行します。だから、コード全体、私は、このコマンドの出力は、いつものように、画面に印刷し
proc = subprocess.call(command)
のようなラインを持っているが、それは、ユーザーが指定したファイルにダンプしないでしょう。
一つの可能なオプションは、ファイルへのパイプを開くために、次のようになります。
proc = subprocess.call(command, stdout=f, stderr=subprocess.OUTPUT)
しかし、それは唯一の画面にファイルにダンプしないでしょう。
基本的に、私の質問は次のとおりです:subprocess.call専用のファイルの別のハンドラーを構築する必要なく、既存のロガーを活用できる方法はありますか? (おそらく、出力をロガーにリダイレクトすることによって)?あるいは、現在の設定ではこれは不可能ですか?後者の場合、セットアップをどのように改善できますか?
(それらが受信されると実行ファイルからのメッセージが記録されるようにロギングは、「リアルタイム」にした場合ああ、また、それは素晴らしいことだ。)任意の助け
ありがとう! :)
あなたの状況では、Lennart Regebroの[StreamLoggerクラス](http://stackoverflow.com/a/4838875/190597)がうまく動作します。 – unutbu
参考になりました!これは私の場合にはうまくいく。 –