0
我在發現logging
,我想將它集成到一個類中以供外部使用。這意味着,用戶可以選擇忽略日誌記錄功能或將處理程序綁定到它。如何在Python中將記錄器添加到模塊中?
我現在有這在我的測試模塊:
import logging
class Test:
def __init__(self):
self.logger = logging.getlogger(__module__ + '.Test')
def hello(self):
self.logger.warn('Hello World!')
test = Test()
test.hello()
有了這個,我得到的錯誤
No handlers could be found for logger
我恰恰不想綁定一個處理程序,這個記錄器,否則我可能會覆蓋父母的選擇。我認爲默認處理程序是Nullhandler
。
什麼是一個日誌記錄功能集成一個獨立的模塊內的正確模式?
當然一個解決辦法是檢查,如果沒有處理程序綁定到它:
if not len(self.logger): l.addHandler(logging.NullHandler())
這不可能是真正的代碼。 「測試」沒有「警告」屬性。 'self.warn('Hello World!')'會失敗。 –
@PeterWood我的錯誤:( – nowox
我創建了日誌模塊,提供我自己的getLogger功能檢查「如果不logger.handlers」,並增加了一個控制檯處理器的封裝模塊。所以,你所建議的解決方案應該工作。 –