2013-01-18 10 views
13

Pythonのログステートメントの格納場所を知る方法論とは何ですか?私がしなければPythonロギング - ログファイルの場所を確認しますか?

はすなわち:

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

はどこでログファイルを見つけることができますか?また、私が電話したとき:

logging.getLogger(__name__) 

これはどういうわけかロガーの振る舞い/保存に関するものですか?

答えて

12

loggingモジュールは、ロガーに接続されたハンドラを使用して、最終的にメッセージが保存または表示される方法や場所を決定します。デフォルトではloggingを設定してファイルに書き込むこともできます。 docsを実際に読むべきですが、logging.basicConfig(filename=log_file_name)を呼び出す場合は、log_file_nameはメッセージを書き込むファイルの名前です(loggingの何かが呼び出される前にこれを行う必要があります)。すべてに記録されたすべてのメッセージロガー(後で何らかの再構成が行われない限り)がそこに書き込まれます。ロガーがどのレベルに設定されているかに注意してください。メモリが使用されている場合は、infoがデフォルトのログレベルを下回っているため、basicConfigの引数にlevel=logging.INFOを含めて、メッセージがファイルに格納されるようにする必要があります。名前がsome_stringの値であると、ルート・ロガーから階層内の正しい位置に挿入Loggerオブジェクトを返すlogging.getLogger(some_string)質問の他の部分に関しては

。引数なしで呼び出されると、ルートロガーを返します。 __name__は、現在のモジュールの名前を返します。したがって、logging.getLogger(__name__)は、名前が現在のモジュールの名前に設定されたLoggerオブジェクトを返します。これは、loggingで使用される一般的なパターンです。これは、ロガー構造がコードのモジュール構造を反映するため、デバッグ時にロギングメッセージをより便利にすることがよくあります。

0

お使いの環境でPythonシェルであなたのlogオブジェクトをインスタンス化し、の値を見てみてください、ログファイルの場所を検索するには:しようと、単純なファイルロガーのログの場所を取得するには

log.handlers[0].stream

3

logging.getLoggerClass().root.handlers[0].baseFilename 
関連する問題