python - matplot - Desactivando el inicio de sesión en Paramiko
title python matplotlib (3)
Estoy usando el cliente ssh proporcionado por Paramiko para crear una función llamada ''remoteSSH'' (el nombre del archivo es remoteConnect.py):
import paramiko
import logging
logger = paramiko.util.logging.getLogger()
logger.setLevel(logging.WARN)
def remoteSSH(username,userpasswd):
....
Ahora estoy llamando a la función remoteSSH en otro módulo de Python llamado getData () (getdata.py):
from remoteConnect import *
import logging
logger2=logging.getLogger()
logger2.setLevel(logging.INFO)
Sin embargo, una llamada a logger2.info(''ccc'')
también activa todo el registro de nivel INFO en el archivo que está importando el módulo Paramiko (es decir, remoteConnect.py
)
¿Cómo desactivo el registro en remoteConnect.py
para que Paramiko no escupa todos los mensajes del nivel INFO?
Está configurando el nivel del registrador raíz en WARN
(debería ser WARNING
) en remoteConnect.py
, y en INFO
en getdata.py
. Le aconsejaría que evite establecer niveles en el registrador raíz en módulos aleatorios en su aplicación: en su lugar, haga esto en todos los módulos en los que desee utilizar el registro:
import logging
logger = logging.getLogger(__name__)
y use logger.debug(...)
, etc. en ese módulo. Luego, en un lugar específico de su aplicación (normalmente en su lógica llamada desde if __name__ == ''__main__'':
establezca los niveles y manejadores que desee, ya sea mediante programación a través de basicConfig
o un conjunto de llamadas API para agregar manejadores, formateadores, etc. ., o mediante el uso de una configuración declarativa (por ejemplo, utilizando las API fileConfig
o dictConfig
, documentadas here ).
Intenta esto antes de configurar logger2:
logging.basicConfig(level=logging.WARN)
Paramiko nombra sus registradores. Parece que funciona como lo hacen los módulos de registro en otros idiomas (el registro de JDK viene a la mente).
He encontrado que
logging.getLogger("paramiko").setLevel(logging.WARNING)
ayuda.
(Puede colocar esto dentro del módulo que está importando paramiko, solo asegúrese de que el módulo de ''registro'' también esté habilitado).
Me tomó un tiempo darme cuenta de cómo hacer esto (de hecho, no fue hasta que empecé a lidiar con el registro de Java que esta respuesta me vino a la mente)