9 Represents a logfile. Used to write data to a file. e.g.
11 logfile = Logfile('filename')
12 print >> logfile, data
14 def __init__(self, filename, date_in_filename = True):
17 localtime = time.localtime()
18 (year, month, day) = localtime[:3]
19 date = "%(year)s.%(month)s.%(day)s" % locals()
21 # append date to filename
23 if filename.find(".log") > -1:
24 filename = filename.split(".log")[0]
25 filename = "%(filename)s-%(date)s.log" % locals()
27 filename_parts = filename.split(os.sep)
28 # Add directory (qaapi) to files path
29 if 'qaapi' not in filename_parts:
30 filename_parts.insert(len(filename_parts)-1, 'qaapi')
31 # Add directory(today's date) to file's path
32 if date not in filename_parts:
33 filename_parts.insert(len(filename_parts)-1, date)
35 # Make sure file's parent directory exists
36 self.dir = filename_dir = os.sep + os.sep.join(filename_parts[:-1]) + os.sep
37 filename = os.sep + os.sep.join(filename_parts)
38 (status, output) = commands.getstatusoutput("mkdir -p %(filename_dir)s" % locals())
39 self.filename = filename
42 if os.path.isfile(self.filename):
43 (status, output) = utils.commands("ls %s*" % self.filename)
44 files = output.split("\n")
46 lastfile = files[-1:][0]
47 index = lastfile.split(self.logfile.filename)[1].replace(".", "")
52 index = str(int(index) +1)
53 utils.commands("mv %s %s.%s" % (self.filename, self.filename, index))
56 def write(self, data):
58 fd = os.open(self.filename, os.O_WRONLY | os.O_CREAT | os.O_APPEND, 0644)
59 os.write(fd, '%s' % data)
62 sys.stderr.write(data)
65 log_filename = '/var/log/qaapi.log'
66 logfile = Logfile(log_filename)
68 def log(method, method_name = None, \
69 log_filename = 'system.log', errorlog_filename = 'system_error.log'):
71 Logs whether the specified method completed successfully or not and
72 returns the method result. Use as a decorator, e.g.,
84 result = log(foo)(...)
87 logfile = Logfile(log_filename)
88 error_logfile = Logfile(errorlog_filename)
90 if method_name is None:
91 method_name = method.__name__
93 def wrapper(*args, **kwds):
95 print >> logfile, method_name + ": ",
97 #print >> logfile, args,
98 result = method(*args, **kwds)
99 print >> logfile, " [OK]"
101 print >>logfile, " [FAILED]"
102 print >> error_logfile, "%s: %s\n" % (method_name, traceback.format_exc())