class log: file_default='logs.txt' def __init__(self,config,fichier=None,clean=False): self.ERR=1 self.WARN=3 self.INFO=5 self.DEBUG=7 self.TRACE=9 self.config=config if config.flags_semaphores['logs']: self.semaphore_log=threading.Semaphore() else: self.semaphore_log=PseudoSemaphore() if fichier: self.file_default=fichier self.clean=clean def verif(self,fichier,niv): if not fichier: fichier=self.file_default if not niv: niv=self.ERR fichier=self.config.logs_redirect.get(fichier,fichier) level_max=self.config.logs_levels.get(fichier,self.config.logs_levels.get('default',10)) if niv > level_max: return None return fichier def traceback(self,file=None,niv=None): file=self.verif(file,niv) if file: self.semaphore_log.acquire() try: f=open('%s/%s' % (self.config.path['logs'],file) , 'a' ) f.write('[%s]%s : %s\n' % (niv,datetime.datetime.now(),"==== TRACEBACK START ====")) traceback.print_exc(file=f) f.write('[%s]%s : %s\n' % (niv,datetime.datetime.now(),"===== TRACEBACK END =====")) f.close() except: pass self.semaphore_log.release() def L(self,niv,text,file=None): file=self.verif(file,niv) if file: self.semaphore_log.acquire() try: f=open('%s/%s' % (self.config.path['logs'],file) , 'a' ) if self.clean: f.write('%s\n' % text) else: f.write('[%s]%s : %s\n' % (niv,datetime.datetime.now(),text)) f.close() except: pass self.semaphore_log.release() def err(self,text,file=None): self.L(self.ERR,text,file) def warn(self,text,file=None): self.L(self.WARN,text,file) def info(self,text,file=None): self.L(self.INFO,text,file) def debug(self,text,file=None): self.L(self.DEBUG,text,file) def trace(self,text,file=None): self.L(self.TRACE,text,file)