私は調査ツールを作成していますが、最近、「print」ステートメントの使用から、Python に組み込まれているロガー機能の使用に切り替えました。これにより、出力を画面にダンプするだけでなく、ファイルにダンプするオプションをユーザーに提供できるようになると私は考えました。
ここまでは順調ですね。私のコードの Python の部分では、「logger.info」と「logger.error」を使用して、画面とファイルの両方にダンプします。「logger」はモジュール全体のロガーです。この部分は魅力のように機能します。
ただし、いくつかの時点で、「subprocess.call」を使用して、シェルを介して実行可能ファイルを実行します。したがって、コード全体に次のような行があります
proc = subprocess.call(command)
このコマンドからの出力は、いつものように画面に出力されますが、ユーザーが指定したファイルにはダンプされません。
考えられるオプションの 1 つは、ファイルへのパイプを開くことです。
proc = subprocess.call(command, stdout=f, stderr=subprocess.OUTPUT)
しかし、それはファイルにのみダンプし、画面にはダンプしません。
基本的に、私の質問はこれに要約されます: subprocess.call 専用のファイル用に別のハンドラーを作成することなく、既存のロガーを活用できる方法はありますか? (おそらく、出力をロガーにリダイレクトすることによってですか?)または、現在のセットアップを考えると、これは不可能ですか?後者の場合、どうすればセットアップを改善できますか?
(ああ、また、ログが「リアルタイム」であると、実行可能ファイルからのメッセージが受信されたときにログに記録されるようになります。)
助けてくれてありがとう!:)