foo.modulesという名前のグループを使用してエントリポイントを反復処理するアプリケーションfooがあります。次に、 load()メソッドを使用して出現箇所をロードします。このアーキテクチャにより、アプリケーションfooのプラグイン/モジュールを作成できます。詳細については、こちらを参照してください。
また、アプリケーションは起動時にいくつかのロギング ハンドラーを構成します。ただし、プラグインをロードすると (たとえばfoo_plugin
)、fooアプリケーションのロギング名前空間が名前空間階層で使用できなくなり、次のような警告が表示されます。
No handlers could be found for logger "foo_plugin.plugin"
コンセプトは、プラグインを書く人は誰でも書くことができるということです:
import logging
logger = logging.getLogger(__name__)
プラグインのロギングは、fooアプリケーションの指示どおりに機能するはずです。
変数の前にfoo名前空間 ( foo.
)を明示的に追加する__name__
と、ログは再び機能しますが、もちろんこれはあまり洗練されたものではありません。より良いアイデアはありますか?