По умолчанию библиотека Python « Запросы» записывает сообщения журнала в консоль в соответствии с:
Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606
Меня обычно не интересуют эти сообщения, и я хотел бы отключить их. Как лучше всего замолчать эти сообщения или уменьшить многословность запросов?
python
logging
python-requests
verbosity
aknuds1
источник
источник
Ответы:
Я узнал, как настроить уровень регистрации запросов , это делается через стандартный модуль регистрации . Я решил настроить его так, чтобы он не регистрировал сообщения, если они не являются хотя бы предупреждениями:
Если вы хотите применить этот параметр и для библиотеки urllib3 (обычно используемой в запросах), добавьте следующее:
источник
pysimplesoap
, и этот ответ поможет мне спасти мой деньgetLogger("urllib3")
чтобы подавить сообщения.Если вы пришли сюда в поисках способа изменить ведение журнала любого (возможно, глубоко вложенного) модуля, используйте
logging.Logger.manager.loggerDict
для получения словаря всех объектов средства ведения журнала. Возвращенные имена могут быть использованы в качестве аргумента дляlogging.getLogger
:В комментарии user136036 учтите, что этот метод показывает только те регистраторы, которые существуют на момент запуска приведенного выше фрагмента. Если, например, модуль создает новый регистратор при создании экземпляра класса, то вы должны поместить этот фрагмент после создания класса, чтобы напечатать его имя.
источник
urllib3
сообщения журнала при использованииboto3
. Регистратор в таком случае естьbotocore.vendored.requests.packages.urllib3
, поэтому я использовал это:logging.getLogger("botocore.vendored.requests.packages.urllib3").setLevel(logging.WARNING)
и я наконец избавился от сообщений.APScheduler
делает при вызовеBackgroundScheduler.BackgroundScheduler()
.Таким образом, все сообщения уровня = INFO от urllib3 не будут присутствовать в файле журнала.
Таким образом, вы можете продолжать использовать level = INFO для ваших сообщений журнала ... просто измените это для библиотеки, которую вы используете.
источник
setLevel(logging.WARNING)
для регистрации также возможные предупреждения и сообщения об ошибках.Позвольте мне скопировать / вставить раздел документации, который я написал неделю или две назад, после того, как у вас возникла проблема, похожая на вашу:
источник
Для любого, кто использует,
logging.config.dictConfig
вы можете изменить уровень журнала библиотеки запросов в словаре следующим образом:источник
dictConfig
под капотом.Установка имени логгера как
requests
илиrequests.urllib3
не работала у меня. Мне пришлось указать точное имя регистратора, чтобы изменить уровень ведения журнала.Сначала посмотрите, какие регистраторы вы определили, чтобы увидеть, какие из них вы хотите удалить
И вы увидите что-то вроде этого:
{...'urllib3.poolmanager': <logging.Logger object at 0x1070a6e10>, 'django.request': <logging.Logger object at 0x106d61290>, 'django.template': <logging.Logger object at 0x10630dcd0>, 'django.server': <logging.Logger object at 0x106dd6a50>, 'urllib3.connection': <logging.Logger object at 0x10710a350>,'urllib3.connectionpool': <logging.Logger object at 0x106e09690> ...}
Затем настройте уровень для точного регистратора:
источник
Если у вас есть файл конфигурации, вы можете настроить его.
Добавьте urllib3 в раздел логгеров:
Добавьте раздел logger_urllib3:
источник
Этот ответ здесь: Python: как подавить логирование операторов из сторонних библиотек?
Вы можете оставить уровень ведения журнала по умолчанию для basicConfig, а затем установить уровень DEBUG, когда получите регистратор для вашего модуля.
источник
источник
Руководство Kbrose по поиску того, какой регистратор генерировал сообщения журнала, было чрезвычайно полезным. Для моего проекта Django мне пришлось перебирать 120 различных регистраторов, пока я не обнаружил, что именно
elasticsearch
библиотека Python вызывает у меня проблемы. Согласно руководству в большинстве вопросов, я отключил его, добавив это в мои регистраторы:Публикация здесь на случай, если кто-то еще увидит бесполезные сообщения журнала, поступающие при выполнении запроса Elasticsearch.
источник
просто: просто добавь
requests.packages.urllib3.disable_warnings()
послеimport requests
источник
INFO
.Я не уверен, что предыдущие подходы перестали работать, но в любом случае, вот еще один способ удаления предупреждений:
По сути, добавление переменной среды в контексте выполнения скрипта.
Из документации: https://urllib3.readthedocs.org/en/latest/security.html#disabling-warnings
источник