何が起こっているかについてのアイデアはありますが、それを修正する方法を必ずしも見つけ出すことはできません。Pythonログに%(name)のフォーマットプロパティが期待どおりに表示されない
私は抽象基本クラス(ABC)の属性がlogger = logging.getLogger(__name__)
です。 __init__
次に、同じコードで属性を上書きする具象クラスがあります。具象クラスには、from ABC import *
のインポートステートメントもあります。
私の質問は... なぜ私の具体的なクラスの半分が発生するにもかかわらず、私のすべての声明文は、ABCの名前で出てくるのですか?私は%(name)s
を含むフォーマット文字列を使用していますが、これは上記のloggerインスタンスから取り出して、__name__
属性を使用しています。
残念ながら、私はスタンドアロンシステムを使用しているため、必ずしもすべてのコードをコピーすることはできませんが、重要な要素にヒットしたと思います。私が追加する唯一の他のものは、具体的なクラスはsuper(concreteClass, self).__init__()
を呼び出しますが、ロガー属性を上書きするコードを実行する前にこの呼び出しを行います。
import logging
class ABC(object)
def __init__():
self.logger = logging.getlogger(__name__)
self.logger.info("hey I'm in the ABC")
class Concrete(ABC)
def __init__():
super(Concrete,self).__init__()
self.logger = logging.getlogger(__name__)
self.logger.info("hey I'm in the concrete")
output
conc = Concrete()
(DATE) ABC INFO Hey I'm in the ABC
(DATE) ABC INFO Hey I'm in the concrete
私はスタンドアロンシステム上にいるので、コードを移植することはできません。私は、永遠に費やすことなく、私がコードしているように近くの例を書く必要がありました。 これらは同じファイルにありません。それらは別々のファイルにあります。 – bravosierra99
私はあなたのコードが基本的に私が話しているものと同一であることがわかります。それは非常に面白いです。私のコードがどのようなものかをさらに深く掘り下げてみましょう。たぶん私は何かを見逃しているかもしれません、あなたが得ている結果がまさに私が得ると期待しているもので、私は得られていないようです。 – bravosierra99