Por defecto, la biblioteca de Python Solicitudes escribe mensajes de registro en la consola, en la línea de:
Starting new HTTP connection (1): example.com
http://example.com:80 "GET / HTTP/1.1" 200 606
Por lo general, no estoy interesado en estos mensajes y me gustaría deshabilitarlos. ¿Cuál sería la mejor manera de silenciar esos mensajes o disminuir la verbosidad de las solicitudes?
python
logging
python-requests
verbosity
aknuds1
fuente
fuente
Respuestas:
Descubrí cómo configurar el nivel de registro de las solicitudes , se realiza a través del módulo de registro estándar . Decidí configurarlo para no registrar mensajes a menos que sean al menos advertencias:
Si también desea aplicar esta configuración para la biblioteca urllib3 (normalmente utilizada por solicitudes), agregue lo siguiente:
fuente
pysimplesoap
, y esta respuesta me ayuda a salvar mi díagetLogger("urllib3")
para suprimir los mensajes.En caso de que haya venido buscando una forma de modificar el registro de cualquier módulo (posiblemente profundamente anidado), use
logging.Logger.manager.loggerDict
para obtener un diccionario de todos los objetos del registrador. Los nombres devueltos se pueden usar como argumento paralogging.getLogger
:Por usuario136036 en un comentario, tenga en cuenta que este método solo le muestra los registradores que existen en el momento en que ejecuta el fragmento anterior. Si, por ejemplo, un módulo crea un nuevo registrador cuando crea una instancia de una clase, debe colocar este fragmento después de crear la clase para imprimir su nombre.
fuente
urllib3
mensajes de registro al usarboto3
. El registrador en tal caso esbotocore.vendored.requests.packages.urllib3
, así que usé esto:logging.getLogger("botocore.vendored.requests.packages.urllib3").setLevel(logging.WARNING)
y finalmente me deshice de los mensajes.APScheduler
hace cuando llamaBackgroundScheduler.BackgroundScheduler()
.De esta forma, todos los mensajes de level = INFO de urllib3 no estarán presentes en el archivo de registro.
Para que pueda seguir usando el nivel = INFO para sus mensajes de registro ... simplemente modifique esto para la biblioteca que está utilizando.
fuente
setLevel(logging.WARNING)
para registrar también posibles mensajes de advertencia y error.Permítame copiar / pegar la sección de documentación sobre la que escribí hace una o dos semanas, después de tener un problema similar al suyo:
fuente
Para cualquiera que lo use
logging.config.dictConfig
, puede modificar el nivel de registro de la biblioteca de solicitudes en el diccionario de esta manera:fuente
dictConfig
bajo el capó.Establecer el nombre del registrador como
requests
orequests.urllib3
no funcionó para mí. Tuve que especificar el nombre exacto del registrador para cambiar el nivel de registro.Primero vea qué registradores ha definido, para ver cuáles desea eliminar
Y verás algo como esto:
{...'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> ...}
Luego configure el nivel para el registrador exacto:
fuente
Si tiene un archivo de configuración, puede configurarlo.
Agregue urllib3 en la sección de registradores:
Añadir logger_urllib3 sección:
fuente
Esta respuesta está aquí: Python: ¿cómo suprimir las declaraciones de registro de bibliotecas de terceros?
Puede dejar el nivel de registro predeterminado para basicConfig, y luego establecer el nivel de DEPURACIÓN cuando obtiene el registrador para su módulo.
fuente
fuente
La guía de Kbrose para encontrar qué registrador estaba generando mensajes de registro fue inmensamente útil. Para mi proyecto Django, tuve que clasificar 120 registradores diferentes hasta que descubrí que era la
elasticsearch
biblioteca Python la que me causaba problemas. Según la guía en la mayoría de las preguntas, lo desactivé agregando esto a mis registradores:Publicar aquí en caso de que alguien más vea que aparecen mensajes de registro inútiles cada vez que ejecutan una consulta Elasticsearch.
fuente
simple: solo agregue
requests.packages.urllib3.disable_warnings()
despuésimport requests
fuente
INFO
.No estoy seguro de si los enfoques anteriores han dejado de funcionar, pero en cualquier caso, aquí hay otra forma de eliminar las advertencias:
Básicamente, agregar una variable de entorno en el contexto de la ejecución del script.
De la documentación: https://urllib3.readthedocs.org/en/latest/security.html#disabling-warnings
fuente