Я читал документы, но не упоминал об этом. Можно ли передавать параметры в пользовательский класс 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>
Каждый ключ в разделе обработчика, который не является одним из class
, level
, formatter
или filters
, передается конструктору обработчика в качестве аргумента ключевого слова. Пример:
"handlers": {
"custom_handler": {
"class": "logging.CustomHandler",
"level": "INFO",
"formatter": "custom",
"argA": "spam",
"argB": "eggs"
}
}
Это также означает, что наличие обработчика с конструктором arg с именем class
, level
, formatter
или filters
- плохая идея...
Источник: схема словаря конфигурации.