アプリケーションの仕組みを学ぼうとしています。そして、このために、ログ出力にメッセージを送信する関数の名前と行番号 (コード内) をログに記録することを目的として、各関数の本体の最初の行としてデバッグ コマンドを挿入しています。最後に、このアプリケーションは多くのファイルで構成されているため、アプリケーションの制御フローをよりよく理解できるように、単一のログ ファイルを作成したいと考えています。
これが私が知っていることです:
関数名を取得するために使用できます
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>}
。これについて何か意見はありますか?ロギングを使用してハンドラーを追加してファイルに記録する方法は知っていますが、プロジェクト内の関数呼び出しの正しい順序ですべてのログ メッセージを記録するために単一のファイルを使用できるかどうかはわかりません。
助けていただければ幸いです。
ありがとう!