Python3 で大規模なハードウェア シミュレーション ライブラリを作成しています。ロギングには、Python3 Logging モジュールを使用します。
メソッドレベルの粒度でデバッグメッセージを制御するために、ログを記録したい各メソッド内にサブロガーを作成する方法を「路上で」(わかりました、ここでは StackOverflow で) 学びました。
sub_logger = logging.getChild("new_sublogger_name")
sub_logger.setLevel(logging.DEBUG)
# Sample debug message
sub_logger.debug("This is a debug message...")
setLevel() の呼び出しを変更することで、ユーザーはメソッドごとにデバッグ メッセージを有効/無効にすることができます。
今、ボスマンはこのアプローチが好きではありません. 彼は、ライブラリ内のすべてのロギング メッセージを同じメソッド レベルの粒度で有効/無効にできる単一ポイントを提唱しています。(これは、独自の Python ロギング ライブラリ BTW を作成することによって達成される予定でした)。
ロギングの車輪を再発明したくないので、代わりに Python Logging ライブラリを引き続き使用することを提案しましたが、代わりに Filters を使用してロギング メッセージの単一ポイント制御を可能にしました。
Python Logging Filters を頻繁に使用していませんが、このアプリケーションで Filters と Sublogger.setLevel() を使用することについてのコンセンサスはありますか? 各方法の長所/短所は何ですか?
setLevel() はしばらく使って慣れてきましたが、それが私の客観性に影響を与えているのかもしれません。ただし、別の Python ロギング ライブラリを作成するためにみんなの時間を無駄にしたくはありません。