import os import datetime class Logging: """ Clase que registra los eventos del flujo del programa en archivos """ def __init__(self, timezone, folder=None): self.tz = timezone self.folder = folder self.filename = self.get_filename() self.log('------') def get_filename(self): files = [f for f in os.listdir(self.folder) if os.path.isfile(os.path.join(self.folder, f)) and 'logging' in f] if len(files) > 0: filename = files[-1] if os.path.getsize(os.path.join(self.folder, filename)) < 1024 * 1024: return filename today = datetime.datetime.now(tz=self.tz) filename = 'logging-{0}.log'.format(today.strftime('%Y-%m-%d')) base_name = filename n = 1 while os.path.isfile(os.path.join(self.folder, filename)): filename = '-'.join([ base_name, str(n) ]) n += 1 return filename def log(self, message, caller=None): now = datetime.datetime.now(tz=self.tz) if caller is None: msg = '[{0}] {1}.'.format(now.strftime('%Y-%m-%d %H:%M:%S'), message.strip('.')) else: msg = '[{0}] ({2}) {1}.'.format(now.strftime('%Y-%m-%d %H:%M:%S'), message.strip('.'), caller) print(msg) if self.folder is not None: filename = os.path.join(self.folder, self.filename) with open(filename, 'a') as f: f.write(msg + "\n")