我對正在發生的事情有一些想法,但不一定能弄清楚如何解決它。Python日誌不按預期顯示%(name)s的格式屬性
我有一個抽象基類(ABC),其屬性爲logger = logging.getLogger(__name__)
。這發生在__init__
然後我有一個具體的類,用相同的代碼覆蓋該屬性。具體課程還有一個導入聲明from ABC import *
。
我的問題是... 爲什麼我的所有日志語句都出現在ABC的名稱中,儘管其中一半發生在我的具體類中。我使用的格式字符串包括%(name)s
,它從上面使用__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