Уменьшить шум журнала для запросов 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()