gpt4 book ai didi

python - 模式到子类 logging.Logger

转载 作者:行者123 更新时间:2023-12-02 02:20:09 30 4
gpt4 key购买 nike

是否有一个共同的模式可以遵循以正确地子类化 logging.Logger

import logging

class MyLogger(logging.Logger):
__init__(self, name):
super().__init__(name=name)

属性似乎不起作用,因为以这种方式创建的 MyLogger 没有对其父项的引用。虽然我可以手动设置它的parent,但是恐怕logging.Logger 的其他协议(protocol)也不能被MyLogger 满足吗?

最佳答案

您如何创建记录器实例?规范的做法是永远不要直接实例化记录器,而是使用管理器。日志库有 setLoggerClass 来告诉管理器在创建 Loggers 时使用哪个类。经理还设置 parent :

import logging

class MyLogger(logging.Logger):
def __init__(self, name):
super().__init__(name=name)

logging.setLoggerClass(MyLogger)

logger = logging.getLogger('some_logger')
child_logger = logging.getLogger('some_logger.child')

print(type(logger)) # MyLogger
print(logger.parent) # shows the root logger
print(child_logger.parent) # shows 'some_logger'

关于python - 模式到子类 logging.Logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66540452/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com