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

1

Я читал документы, но не упоминал об этом. Можно ли передавать параметры в пользовательский класс 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>
Теги:
logging
python-3.6

1 ответ

2
Лучший ответ

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

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

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

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

  • 0
    Спасибо. Это то, что я не знал (очевидно)
  • 1
    Рад, что смог помочь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню