Turning off logging in Paramiko

user963986 picture user963986 · Nov 16, 2011 · Viewed 21.5k times · Source

I am using the ssh client provided by Paramiko to create a function call remoteSSH (the file name is remoteConnect.py):

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

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

Now I am calling the remoteSSH function in another Python module called getData() (getdata.py):

from remoteConnect import *
import logging
logger2=logging.getLogger()
logger2.setLevel(logging.INFO)

However, a call to logger2.info('ccc') also turns on all INFO level logging in the file that is importing the Paramiko module (i.e. remoteConnect.py)

How do I turn off logging in remoteConnect.py so that Paramiko does not spit out all the INFO level messages?

Answer

Mark Nunberg picture Mark Nunberg · Oct 18, 2012

Paramiko names its logggers. It seems to function as the logging modules in other languages (JDK logging comes to mind) do.

I've found that

logging.getLogger("paramiko").setLevel(logging.WARNING) helps.

(You can put this inside the module that's importing paramiko - just make sure the 'logging' module is enabled as well).

It took me a while to figure out how to do this (in fact, it wasn't until I actually started dealing with Java logging that this answer came to mind)