2016-04-07 24 views
0

通常はコンソールに表示されるpythonインタプリタからの完全な出力をloggsするロガーをビルドしようとしました。Pythonログpythonインタプリタの出力

これは私の提案です。動作しませんでした。

logger = logging.getLogger() 
stdoutStreamHandler = logging.StreamHandler(sys.stdout) 
stderrStreamHandler = logging.StreamHandler(sys.stderr) 
fileHandler = logging.FileHandler(logpath) 
logger.addHandler(stdoutStreamHandler) 
logger.addHandler(stderrStreamHandler) 
+0

私の答えはどれくらいうまくあなたのために働いたのですか?私はあなたの結果に興味があります。 –

答えて

0

わからないあなたは、Pythonインタプリタからの完全な出力をロギングすることで何を意味するのか、あなたは、実行時にコマンドラインインタプリタや背景インタプリタを意味するのですか?

これは役立つかもしれないいずれかの方法:trace

これは、トレースを持つ任意のコードを実行することが可能になり、また、あなたがそれをファイルに書き出すことができます:

import sys 
import trace 

# create a Trace object, telling it what to ignore, and whether to 
# do tracing or line-counting or both. 
tracer = trace.Trace(
    ignoredirs=[sys.prefix, sys.exec_prefix], 
    trace=0, 
    count=1) 

# run the new command using the given tracer 
tracer.run('main()') 

# make a report, placing output in the current directory 
r = tracer.results() 
r.write_results(show_missing=True, coverdir=".") 

私はまだそれを自分で使っていませんが、実行することができます

logger.debug(r) 

ログファイルにデバッグログレベルのレコードを作成するものは、もちろんinfo、warning、errorまたはcriticalに変更することができます。