1

私はPythonにかなり慣れていません。ロギングを改善するために、既存の python モジュールを変更しています。各メソッド呼び出し (および終了) に、ログに記録する必要がある特定のキー (コンテキスト) と入口点と出口点をタグ付けする必要があることに遭遇しました。そのキーはルート メソッドで生成され、その後のメソッド呼び出しに渡されることになっています。

私が従うべきアプローチについて混乱しています。AOPまたは注釈を使用している可能性のある既存のメソッドインターフェイスに追加のパラメーターを動的に挿入する方法はありますか?

または、この質問を短く言い換えます-

後続のメソッド呼び出しに追加の引数を渡すにはどうすればよいですか?

ありがとうパンクス

4

1 に答える 1

0

これらすべてのメソッドに対して 1 つのロガー インスタンスがある場合は、ルート メソッドがエントリ時にロガーのコンテキストを設定し、終了時にそれを削除することができます。

@contextlib.contextmanager
def setup_login(logger, context):
    old_name = logger.name
    logger.name = context
    yield
    logger.name = old_name

root メソッドは次のようになります。

def root():
    context = compute_context()
    with setup_login(logger, context):
        # call other methods

私は を使用logger.nameしましたが、ロガーの他の属性を使用したり、他のシングルトンを使用してグローバル状態を共有したりできます。

于 2012-10-09T09:52:07.850 に答える