これが私が知っていることです:
function_name.__name__ を使用できますが、function_name は使用したくありません (汎用の
Log.info(" をすぐにコピーして貼り付けることができます)メッセージ") をテキスト内のすべての関数に適用します)。 C では
__func__ マクロを使用してこれを実行できることはわかっていますが、Python についてはよくわかりません。
locals() 関数を使用していることを確認しました (そして私はそう信じています)。しかし、完全に理解していない構文を使用しています。例:
options = " LOG.debug('%(flag)s : %(flag_get)s' % locals())
LOG.info("My message %s" を使用してみました) % locals()) を使用して、
{'self': <__main__.Class_name object at 0x22f8cd0>} のようなものを生成します。これについて何か入力はありますか?
最も単純な (3) から始めます。
logging を使用すると、すべての呼び出しを 1 つのログ ファイルまたはその他の出力先に集約できます。呼び出しは、プロセス内で発生した順序で並べられます。
次のステップ: (2)。
現在のスコープの辞書を提供します。したがって、他のパラメーターのないメソッドでは、スコープ内に self
があり、これには現在のインスタンスへの参照が含まれます。あなたを混乱させるトリックは、%
演算子として辞書を使用する rhs の文字列フォーマットです。 "%(foo)s" % bar
は、bar["foo"]
の値に置き換えられます。
最後に、
で使用されるものと同様のいくつかのイントロスペクション手法を使用して、より多くの情報を記録できます。
リーリー
これにより、受信メッセージに加えて、(元の) 関数名、関数が定義されているファイルの名前、およびそのファイル内の行が記録されます。詳細については、「
」を参照してください。 前のコメントで述べたように、いつでも
import pdb; 行を挿入して、pdb 対話型デバッグ プロンプトを入力することもできます。 pdb.set_trace()<code> を実行し、プログラムを再実行します。これにより、コードをステップ実行し、選択に従ってデータを検査できるようになります。
以上が単一ファイルを使用した Python ログ (関数名、ファイル名、行番号)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。