JetBaget
@JetBaget
Программист Python

Как добавить NullHandler в YAML-конфиг логирования?

Всем привет!

Ребята, вопрос такой: в моем проекте используется файл в yaml-формате для конфигурации библиотеки logging. Помимо прочего, среди библиотек есть requests, для которого мне нужно отключить логирование.
Вот как выглядит у меня блок handlers:
handlers: 
  file:
    class: logging.FileHandler
    level: INFO
    formatter: file_format
    filename: /tmp/jobSerializer.log
  syslog:
    class: logging.handlers.SysLogHandler
    address: /dev/log
    level: INFO
    formatter: syslog_format
  null:
    class: logging.NullHandler

Далее, в блоке loggers пытаюсь использовать хэндлер null:
loggers:
  serializer:
    level: INFO
    handlers: [file]
    propagate: no
  job_launcher:
    level: INFO # уровень логирования логгера (хендлеры не могут иметь уровень более подробный)
    handlers: [file] # выбор хендлеров
    propagate: no # будет ли логгер распространять сообщения хендлерам, связанным с родительским логгером
  requests:
    handlers: [null]
    propagate: no

И получаю следующую ошибку:
Traceback (most recent call last):
  File "/root/work_venv/job820Maker/trunk/serializer/__init__.py", line 33, in main
    logging.config.dictConfig(log_dict)
  File "/usr/local/lib/python3.5/logging/config.py", line 795, in dictConfig
    dictConfigClass(config).configure()
  File "/usr/local/lib/python3.5/logging/config.py", line 556, in configure
    for name in sorted(handlers):
TypeError: unorderable types: str() < NoneType()


Есть еще вариант поставить уровень логирования CRITICAL для requests и также не получать сообщений в лог, но хотелось бы использовать NullHandler.
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
JaxxDexx
@JaxxDexx
По другому не пробовали назвать или в кавычки взять? Ясно же написано, что интерпретатор определяет null как NoneType, а не как строку.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы