49

Python ログステートメントが保存されている場所を知る方法は何ですか?

つまり、もしそうなら:

import logging
log = logging.getLogger(__name__)
log.info('Test')

ログファイルはどこにありますか? また、私が電話すると:

logging.getLogger(__name__)

それは、ロガーの動作/保存方法に何らかの関係がありますか?

4

5 に答える 5

38

モジュールは、loggingロガーにアタッチされたハンドラーを使用して、メッセージを最終的に保存または表示する方法、場所、さらには表示するかどうかを決定します。loggingファイルに書き込むようにデフォルトで設定することもできます。本当にdocsを読む必要がありますが、 logging.basicConfig(filename=log_file_name)where isを呼び出す場合log_file_nameは、メッセージを書き込むファイルの名前です (これは、 in 内の他のものが呼び出される前に行う必要があることに注意してくださいlogging) 場合、すべてのメッセージがすべてのロガーに記録されます (ただし、いくつかのさらなる再構成は後で行われます) そこに書き込まれます。ただし、ロガーがどのレベルに設定されているかに注意してください。メモリが機能する場合info、デフォルトのログレベルを下回っているため、メッセージがファイルに出力されるようにするにlevel=logging.INFOは、引数にも含める必要があります。basicConfig

質問の他の部分については、ルートロガーから階層内の正しい位置に挿入されlogging.getLogger(some_string)たオブジェクトを返します。名前は の値です。引数なしで呼び出すと、ルート ロガーが返されます。 現在のモジュールの名前を返すため、名前が現在のモジュールの名前に設定されたオブジェクトを返します。これは、ロガー構造がコードのモジュール構造を反映するようになるため、 で使用される一般的なパターンです。これにより、多くの場合、デバッグ時にログ メッセージがより便利になります。Loggersome_string__name__logging.getLogger(__name__)Loggerlogging

于 2013-01-18T19:39:02.117 に答える
21

単純なファイル ロガーのログの場所を取得するには、次を試してください。

logging.getLoggerClass().root.handlers[0].baseFilename
于 2015-07-11T06:33:51.133 に答える
4

ログファイルの場所を見つけるにはlog、環境内の Python シェルでオブジェクトをインスタンス化し、次の値を調べてみてください。

log.handlers[0].stream

于 2014-02-11T17:29:41.647 に答える