How to log the output from the multiple telnet sessions to separate log file

manjunatha.mahalingappa at gmail.com manjunatha.mahalingappa at gmail.com
Mon Oct 19 17:48:41 EDT 2015


On Friday, October 16, 2015 at 11:11:58 PM UTC-7, dieter wrote:
> manjunatha.mahalingappa at gmail.com writes:
> > I'm very much new to python. 
> > I'm doing the automation for networking device testing , I will be opening the 4 telnet session, and doing some testing operations on each of those  telnet sessions and capture or log the respective output in 4 different log files.
> 
> Personally, I find it a bit strange that each (telnet) session
> should get its own logfile, but, if that is what you need, I would
> approach it as follows:
> 
>   * define a class "TelnetSession"; create a logger in its "__init__" method;
>     use this logger for all operations inside a "TelnetSession"
> 
>   * instantiate the class "TelnetSession" for each telnet session you
>     want to open.
>     Use those objects method to operate on the sessions.

Hello Dieter,

 I created the my own class MyLogger and passing log file name to it. I'm seeing no log is being written to passed log file instead everything is written to the logfilename [actually logfilename is variable with file name] I'm trying to create MyLogger object for each telnet session. and use that object.

MyLogger is beeing called inside the Telnetsession class. those are present in PmTelnet3.py file.


class MyLogger():
	import logging
	def __init__(self,logfilename):
		#create logger with 'spam_application'
		self.logger = self.logging.getLogger('TelnetSession')
		self.logger.setLevel(self.logging.INFO)
		# create file handler which logs even debug messages
		#self.fh = self.logging.FileHandler(logfile)
		print "The log file name is %s\n" % logfilename
		self.logging.basicConfig(filename = logfilename,
								level = self.logging.INFO ,
								format= '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
								datefmt='%m-%d %H:%M',
								filemode='w')
		# create console handler with a higher log level
		self.ch = self.logging.StreamHandler()

		
	def Log(self):
		self.logger.setLevel(self.logging.INFO)
		self.fh.setLevel(self.logging.INFO)
		self.ch.setLevel(self.logging.INFO)
		self.fh.setFormatter(self.formatter)
		self.ch.setFormatter(self.formatter)
		self.logger.addHandler(self.ch)


class TelnetSession:

    import telnetlib
    import logging
 
    def __init__(self, inHost, inPort, Logname):
       	self.log = MyLogger(Logname)
	self.telnet = self.telnetlib.Telnet(inHost, inPort)
----------------------------------------------------------------------------

def IP_port(file) :
    global Testbed_info
    Testbed_info = []
    F = open(file, 'r')
    F.seek(0)
    line = F.read()
    tuples = re.findall(r'(.+ \d)\s+(.+?)\s+(\d+)', line)
    for (dname, ip, port) in tuples :
		LogFileName = dname.replace(" ","") + ".log"
		#Log = open(logfile, "a")
		#Log = MyLogger(LogFileName)
		Telnet_handle=PmTelnet3.TelnetSession(ip,port,LogFileName)
		tuple = (dname, ip, port, Telnet_handle )
		print tuple
		Testbed_info.append(tuple)
		#T.append(T1)
    return(Testbed_info)

	
#This function is to switch the console

file = '/users/manmahal/MANJU/IP_port.txt'
Testbed_info = IP_port(file)
print "Iam done"


for (dname, ip, port, Telnet) in Testbed_info :

    My_handle = Telnet
    #My_log = log
	
    My_handle.Write("\n")
    My_handle.Write("show config \n")
    time.sleep(2)
    output = My_handle.ReadBuffer()
    #My_fp.write(My_handle.ReadBuffer())
    My_handle.log.logger.info(output)
    My_handle.log.logger.info("HI THERE")

Kindly let me know how can I fix this..



More information about the Python-list mailing list