私はアプリケーションの仕組みを学びたいと思っています。そして、このために、関数の名前とログ出力にメッセージを送信する行番号(コード内)を記録する目的で、各関数の本体の最初の行としてデバッグコマンドを挿入しています。最後に、このアプリケーションは多数のファイルで構成されているため、アプリケーションの制御フローをよりよく理解できるように、単一のログファイルを作成したいと考えています。ここで単一ファイルを使用したPythonロギング(関数名、ファイル名、行番号)
は、私が知っているものです:
関数名を取得するために、私は
function_name.__name__
を使用することができますが、私は私が急速で、一般的なLog.info("Message")
をコピーして貼り付けることができるように(FUNCTION_NAMEを使用したくありませんすべての機能の本体)。私はこれがCで__func__
マクロを使用して行うことができます知っているが、私はPythonについてはわからない。options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
と私のような使用して、それを試してみました:私のアプリケーションは、Pythonlocals()
機能を使用しているが、私は例えばの完全に認識していないです構文で- は、ファイル名と行番号を取得するために、私はそれを見てきました(と私はそれを信じています)
LOG.info("My message %s" % locals())
これは{'self': <__main__.Class_name object at 0x22f8cd0>}
のようなものを生成します。これで何か入力してください? ロギングを使用してファイルにログを記録する方法を知っていますが、プロジェクト内の関数呼び出しの正しい順序ですべてのログメッセージを記録するために単一のファイルを使用できるかどうかはわかりません。
私は非常に助けていただければ幸いです。
ありがとうございます!
あなたは 'import pdb;を使ってpythonデバッガに入ることができます。 pdb.set_trace() 'を呼び出し、対話的にコードをステップ実行します。それはプログラムフローをトレースするのに役立ちます。 –
素晴らしいアイデア!マットありがとう。それは私が毎回デバッグする必要はありませんので、質問に記載されているようにログを取得することはまだ役立つでしょう。また、Eclipse用のJavaと同じくらい良いpython用のIDEについて知っていますか(ctrl + clickは関数定義に変わります)、デバッグを簡単にするために使用できますか? – user1126425