オプションのロガーを関数に実装したいと思います。次のようなものがあります。コード内にオプションのロガーを実装する
def foo(arg1, arg2, arg3, logger=None):
logger = logger or (lambda *x: None)
...
self.logger.debug("The connection is lost.")
ロガーが存在する場合にロギングを実行します。さもなければ、ロガーのデバッグは何もしません。
基本的には、達成するための簡単な方法は、すべてのデバッグ文をif logger
ブロックにネストすることですが、デバッグ文が多数ある場合は面倒です。
あなたの状況でどのように動作するのかよく分かりませんが、ロガーが存在する場合はチェックで機能を引き継ぎ、そうでない場合は同じ名前のロガーを作成します( 'logger'と思われます) 'os.devnul'に? – RocketDonkey
@iTaybこんにちは、あなたは(ダミーロガーを持って)あなたが望むもののかなり簡単な説明があります。 Pythonのロギングは通常、私が知る限りこの方法では使用されません。ロギングフィルタリングでロガーの名前を使用すると、なぜこのような回避策が必要なのか(理由は?) – tdihp
@tdihp私は、提供されたロガーにその活動を記録するコード片を開発したいと思います。このコードは移植可能でなければなりません。それは(うまくいけば)多くの異なるプロジェクトで実装され、私はロギング環境を提供していません。関数のアクティビティを記録するかどうかは、開発者が決めます。私は彼にオプションを与えているだけです。 – iTayb