मैं लॉगिंग (कॉलर का क्लास नाम, मॉड्यूल नाम इत्यादि) के लिए एक कस्टम विशेषता बनाने की कोशिश कर रहा था और मुझे एक अजीब अपवाद के साथ फंस गया कि मुझे बता रहा है कि प्रक्रिया में बनाए गए LogRecord इंस्टेंस में नहीं था आवश्यक गुण। परीक्षण का एक सा होने के बाद मैं इस के साथ समाप्त हो गया:पायथन लॉगिंग मॉड्यूल: कस्टम लॉगर्स
import logging
class MyLogger(logging.getLoggerClass()):
value = None
logging.setLoggerClass(MyLogger)
loggers = [
logging.getLogger(),
logging.getLogger(""),
logging.getLogger("Name")
]
for logger in loggers:
print(isinstance(logger, MyLogger), hasattr(logger, "value"))
कोड पैदावार की यह मालूम होता है सही टुकड़ा:
False False
False False
True True
बग या सुविधा?
आपकी टिप्पणी के लिए धन्यवाद, मैंने प्रश्न संपादित किया है। लेकिन मुझे लगता है कि यह व्यवहार ऐसा नहीं है जो कोई होने की उम्मीद करेगा। – Pastafarianist
ऐसा क्यों नहीं है जो आप होने की उम्मीद करेंगे? यह * सटीक * दस्तावेज कहता है जब कोई नाम निर्दिष्ट नहीं होता है। –
भले ही दस्तावेज कहता है, यह काउंटर-अंतर्ज्ञानी है। लॉगर्स के लिए कक्षा निर्धारित करना, मैं उम्मीद करता हूं कि _all_ लॉगर्स उस वर्ग के पास हों, जिसमें रूट एक शामिल है और पहले से ही तत्काल को छोड़कर। – Pastafarianist