我正在尝试创建一个用于记录日志的自定义属性(调用者的类名、模块名等),但却遇到了一个奇怪的异常,告诉我在创建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
是Bug还是功能?