アプリケーションの仕組みを学びたいと思っています。そして、このために、関数の名前とログ出力にメッセージを送信する(コード内の)行番号をログに記録することを目的として、各関数の本文の最初の行としてデバッグコマンドを挿入しています。最後に、このアプリケーションは多くのファイルで構成されているので、アプリケーションの制御フローをよりよく理解できるように、単一のログファイルを作成したいと思います。
これが私が知っていることです:
関数名を取得するために使用できます
function_name.__name__
が、function_nameを使用したくありません(Log.info("Message")
すべての関数の本体にジェネリックをすばやくコピーして貼り付けることができるようにするため)。これはCで__func__
マクロを使用して実行できることはわかっていますが、Pythonについてはわかりません。ファイル名と行番号を取得するために、私は(と私がいることを信じている)私のアプリケーションは、Pythonの使用していることを見てきた
locals()
:機能が、構文で、私は例えばの完全に認識していないだということをoptions = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
、私は次のように使用して、それを試してみましたLOG.info("My message %s" % locals())
のようなものを生成します{'self': <__main__.Class_name object at 0x22f8cd0>}
。これについて何かご意見がありますか?ロギングを使用してファイルにログを記録するハンドラーを追加する方法を知っていますが、単一のファイルを使用して、プロジェクト内の関数呼び出しの正しい順序ですべてのログメッセージを記録できるかどうかわかりません。
どんな助けにも感謝します。
ありがとう!
import pdb; pdb.set_trace()
インタラクティブにコードをステップ実行できます。これは、プログラムの流れを追跡するのに役立ちます。