Ведение журнала Python: можно ли передать аргументы пользовательскому обработчику в файле конфигурации json - PullRequest
0 голосов
/ 20 сентября 2018

Я прочитал документы, но не нашел никакого упоминания об этом.Можно ли передать параметры в пользовательский класс logging.handler внутри файла конфигурации json?

"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 голосов
/ 21 сентября 2018

Каждый ключ в секции обработчика, который не является одним из class, level, formatter или filters, передается конструктору обработчика в качестве аргумента ключевого слова.Пример:

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

Это также означает, что иметь обработчик с аргументом конструктора с именем class, level, formatter или filters - плохая идея ...

Источник: Схема словаря конфигурации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...