Идея состоит в том, что имена ключей в конфигурации должны совпадать с именованными аргументами в соответствующем вызове для создания обработчика (или средства форматирования, или фильтра). Затем это будет работать и с внешне определенными обработчиками. Учитывая dict config
, который содержит конфигурацию объекта (например, обработчик), код конфигурации делает эквивалент
constructor = config['class'] # or '()' for a custom object being configured
kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
obj = constructor(**kwargs)
чтобы получить настроенный объект. Любые ключи, которые не являются действительными идентификаторами, игнорируются. В случае обработчиков, level,
formatter and
filters` также игнорируется в вызове конструктора, поскольку они имеют особое значение в конфигурации ведения журнала.