Python 3.x python中类的不同记录器
我在同一个模块中有几个类——我希望每个类都有自己的日志模块中日志记录器的class属性。由于日志模块的结构,当我添加:Python 3.x python中类的不同记录器,python-3.x,class,logging,Python 3.x,Class,Logging,我在同一个模块中有几个类——我希望每个类都有自己的日志模块中日志记录器的class属性。由于日志模块的结构,当我添加: logger = logging.getLogger(__name__) 它们的每个记录器都有相同的名称(模块),因此它们实际上都是相同的记录器。我希望每个记录器都是特定于类的(因此它们的名称类似于package.module.ClassName)。我知道“最佳实践”通常是给你的伐木者命名name,也知道我可以随意重命名他们。但我主要是寻找这个用例的推荐方案。解决方案 考虑通
logger = logging.getLogger(__name__)
它们的每个记录器都有相同的名称(模块),因此它们实际上都是相同的记录器。我希望每个记录器都是特定于类的(因此它们的名称类似于package.module.ClassName)。我知道“最佳实践”通常是给你的伐木者命名name,也知道我可以随意重命名他们。但我主要是寻找这个用例的推荐方案。解决方案
考虑通过logging.LoggingAdapter
添加所需的上下文信息
例子
工具书类
日志记录手册(搜索LoggingAdapter):
class CustomAdapter(logging.LoggerAdapter):
"""
This example adapter expects the passed in dict-like object to have a
'connid' key, whose value in brackets is prepended to the log message.
"""
def process(self, msg, kwargs):
return '[%s] %s' % (self.extra['connid'], msg), kwargs
logger = logging.getLogger(__name__)
adapter = CustomAdapter(logger, {'connid': some_conn_id })