Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python中类的不同记录器_Python 3.x_Class_Logging - Fatal编程技术网

Python 3.x python中类的不同记录器

Python 3.x python中类的不同记录器,python-3.x,class,logging,Python 3.x,Class,Logging,我在同一个模块中有几个类——我希望每个类都有自己的日志模块中日志记录器的class属性。由于日志模块的结构,当我添加: logger = logging.getLogger(__name__) 它们的每个记录器都有相同的名称(模块),因此它们实际上都是相同的记录器。我希望每个记录器都是特定于类的(因此它们的名称类似于package.module.ClassName)。我知道“最佳实践”通常是给你的伐木者命名name,也知道我可以随意重命名他们。但我主要是寻找这个用例的推荐方案。解决方案 考虑通

我在同一个模块中有几个类——我希望每个类都有自己的日志模块中日志记录器的class属性。由于日志模块的结构,当我添加:

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 })