2011-11-15 8 views
16

estoy usando el cliente SSH proporcionada por paramiko para crear 'remoteSSH' una función de llamada (el nombre del archivo es remoteConnect.py):Desactivación de la tala en paramiko

import paramiko 
import logging 
logger = paramiko.util.logging.getLogger() 
logger.setLevel(logging.WARN) 

def remoteSSH(username,userpasswd): 
    .... 

Ahora estoy llamando a la función en remoteSSH otro módulo Python llamada 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 se enciende toda la tala nivel de información 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 escuche todos los mensajes de nivel INFO?

+0

Use 'WARNING' -' WARN' es obsoleto. –

Respuesta

0

Prueba esto antes de configurar logger2:

logging.basicConfig(level=logging.WARN) 
3

está configurando el nivel del registrador de la raíz a la WARN (debe ser WARNING) en remoteConnect.py, y para INFO en getdata.py. Yo aconsejaría que evite el establecimiento de niveles en el registrador de la raíz en los módulos al azar en su aplicación: en su lugar, hacer esto en todos los módulos en los que desee utilizar el registro:

import logging 

logger = logging.getLogger(__name__) 

y utilizar 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 controladores que desee, ya sea programáticamente a través de basicConfig o un conjunto de llamadas API para agregar controladores, formateadores, etc., o mediante el uso de una configuración declarativa (por ejemplo, utilizando fileConfig o dictConfig API - documentado here)

35

nombres paramiko sus logggers Se parece funcionar como los módulos de registro en otros idiomas (JDK registro viene a la mente) hacer

I'... he encontrado que

logging.getLogger("paramiko").setLevel(logging.WARNING) me ayuda

(Puede colocar esto dentro del módulo que está importando paramiko; solo asegúrese de que el módulo 'logging' esté habilitado también).

Me tomó un tiempo para averiguar cómo hacer esto (de hecho, no fue hasta que realmente empecé a tratar con el registro de Java que esta respuesta vino a la mente)

+0

El módulo 'pysftp' utiliza' paramiko'. Tu truco es bueno para eso. ¡Gracias! – ssoto