このプログラムがサブプロセスで呼び出された場合、プログラムのロガーからメッセージを取得する際に問題があります。サブプロセスロガーメッセージで呼び出されたプログラムは印刷されませんか?
ここでは、ファイルとコンソールウィンドウにメッセージを印刷するロガーを使用するプログラムのBooFoo.pyです:
import subprocess
proc = subprocess.Popen(['python BooFoo.py'], bufsize=512, stdin = None,
stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
proc_out, proc_err = proc.communicate()
print proc_out
「ロガーブーイング」しません:
import logging
LOG_FILENAME = 'example.log'
logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logger = logging.getLogger('main')
logger.addHandler(logging.StreamHandler())
print 'print foo'
logger.info('logger boo')
ここCallBooFoo.pyプログラムですCallBooFoo.pyで印刷されます。どのようにこれを修正するための任意のアイデア? os.systemを使用すると動作しますが、その他の理由により解決策ではありません。
!今私はそれがドキュメントにもあるのを見ています。しかし、私はまだStreamHandlerが通常のメッセージをstderrに向けるのはなぜだろうか? – bitman
@bitmanおそらく、 'logging'は' stderr'の目的である実行に関するissue /メッセージをユーザに報告するために使用されるはずです。 'stdout'は実際のデータ出力用です。 – Evpok