Python 日志记录:我可以将参数传递给 json 配置文件中的自定义处理程序吗

Mic*_*elR 2 python logging python-3.6

我已经阅读了文档,但没有发现任何提及。是否可以将参数传递给 json 配置文件中的自定义 logging.handler 类?

"handlers": {
    "custom_handler": {
        "class": "logging.CustomHandler",
        "args": ['a', 'b'] # <------------------------            
        "level": "INFO",
        "formatter": "custom"
    }
},
Run Code Online (Sandbox Code Playgroud)

处理程序类定义在哪里:

class CustomHandler(logging.Handler):
    def __init__(self, argA, argB):
        super().__init__()
        self.a = argA
        self.b = argB
    def emit(self, record):
        <Some code>
Run Code Online (Sandbox Code Playgroud)

hoe*_*ing 5

在处理器部分每一个关键,是不是一个classlevelformatterfilters传递给处理程序的构造函数作为关键字参数。例子:

"handlers": {
    "custom_handler": {
        "class": "logging.CustomHandler",
        "level": "INFO",
        "formatter": "custom",
        "argA": "spam",
        "argB": "eggs"
    }
}
Run Code Online (Sandbox Code Playgroud)

这也意味着拥有一个构造函数参数名为class, level, formatteror的处理程序filters是一个坏主意......

来源:配置字典架构