Уменьшить шум журнала для запросов http, contextmanager или пользовательского уровня ведения журнала?

У меня есть регистратор, который я использую для большинства своих программ, которые я установил на logging.INFO, Мне кажется, это наиболее разумная настройка, так как данные, которые я регистрирую, не обязательно являются предупреждением и т. Д. Проблема в том, requests а также urllib использование logging.INFO для каждого из своих HTTP-запросов. Это создает очень длинные журналы для некоторых из моих процессов ETL, и это не обязательно помогает в любом случае.

Я думал о двух решениях, первое из которых заключается в создании функции управления контекстом, которая устанавливает общий уровень скрипта в logging.WARNING только во время части ETL, где нет никакой полезной информации регистрации. Другой вариант - создать пользовательский уровень регистрации между logging.INFO а также logging.WARNING, Что было бы более пригодным для повторного использования и более эффективно для этой цели?

1 ответ

Решение

Когда я настраиваю свой регистратор, я всегда добавляю logging.getLogger('requests').propagate = False чтобы не загрязнять мои журналы журналами из библиотеки запросов.

Например:

def init_logger(config_file=None, log_level=logging.INFO):
    # Configure the logging system
    if config_file:
        logging.config.fileConfig(config_file, disable_existing_loggers=False)
    else:
        logging.basicConfig(level=log_level)

    # Avoid output from the requests module
    logging.getLogger('requests').propagate = False


def main():
    init_logger(…)


if __name__ == '__main__':
    main()
Другие вопросы по тегам