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

时间:2018-09-20 10:41:42

标签: python logging python-3.6

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

"handlers": {
    "custom_handler": {
        "class": "logging.CustomHandler",
        "args": ['a', 'b'] # <------------------------            
        "level": "INFO",
        "formatter": "custom"
    }
},

处理程序类的定义是:

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

1 个答案:

答案 0 :(得分:2)

处理程序部分中不是classlevelformatterfilters之一的每个键都作为关键字参数传递给处理程序构造函数。示例:

"handlers": {
    "custom_handler": {
        "class": "logging.CustomHandler",
        "level": "INFO",
        "formatter": "custom",
        "argA": "spam",
        "argB": "eggs"
    }
}

这也意味着拥有一个带有构造函数arg的处理程序,其名称为classlevelformatterfilters是一个坏主意...

来源:Configuration dictionary schema