def fatal(self, content): try: if self.FATAL < self.__current_log_level: return self.__process.write(content) except: SysLog.error(traceback.format_exc())
def report(self, content): try: if self.REPORT < self.__current_log_level: return self.__report.write(content) except: SysLog.error(traceback.format_exc())
def __clean(self): try: if self.max_count < 0: return sorted_names = dict() """:type: dict[int, string]""" names = os.listdir(self.target) for name in names: if not re.match(r'^' + self.file_name + r'\.\d{20}$', name): continue when = name.split('.')[-1] sorted_names[int(when)] = name deleted_count = len(sorted_names) - self.max_count deleted_list = list() for when, name in sorted_names.items(): if deleted_count <= 0: break deleted_list.append(name) deleted_count -= 1 for name in deleted_list: full_path = os.path.join(self.target, name) os.remove(full_path) except: SysLog.error(traceback.format_exc())
def debug(self, content): try: if self.DEBUG < self.__current_log_level: return self.__process.write(content) except: SysLog.error(traceback.format_exc())
def open(self): try: self.handler = open(self.file_path, 'ab') self.current_size = self.handler.tell() return True except: SysLog.error(traceback.format_exc())
def __rename(self): try: ending = datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') new_file_path = self.file_path + '.' + ending os.rename(self.file_path, new_file_path) except: SysLog.error(traceback.format_exc())
def write(self, content): try: if self.lock is None: return self.__write(content) with self.lock: return self.__write(content) except: SysLog.error(traceback.format_exc())
def close(self): try: if self.handler is None: return if self.current_size <= 0: return self.handler.flush() self.handler.close() self.handler = None except: SysLog.error(traceback.format_exc())
def report(cls, msg, vid='', keyword='normal'): try: if cls.REPORT < cls.__current_log_level: return content = cls.__join_content(vid=vid, keyword=keyword, level='report', msg=msg) if not content: return cls.__report.write(content) except: SysLog.error(traceback.format_exc())
def fatal(cls, msg, vid='', keyword='normal'): try: if cls.FATAL < cls.__current_log_level: return content = cls.__join_content(vid=vid, keyword=keyword, level='fatal', msg=msg) if not content: return cls.__process.write(content) except: SysLog.error(traceback.format_exc())
def __write(self, content): try: try: self.handler.write(content) self.current_size = self.handler.tell() except Exception, e: self.close() self.open() SysLog.error(e.message) if self.current_size >= self.max_size: self.close() self.__rename() self.__clean() self.open() return True
def __join_content(cls, vid, keyword, level, msg): try: separator = '\x1E' the_id = '%s_%s' % (os.getpid(), threading.current_thread().ident) content = '' content += '[%s]%s' % (datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S.%f'), separator) content += '[%s]%s' % (level, separator) content += '[%s]%s' % (the_id, separator) content += '[%s]%s' % (cls.__env, separator) content += '[%s]%s' % (vid, separator) content += '[%s]%s' % (keyword, separator) frame = inspect.currentframe().f_back.f_back info = traceback.extract_stack(f=frame, limit=1)[0] content += '[%s:%s:%s]%s' % (info[0], info[1], info[2], separator) content += '[%s]' % msg content += '\n' return content except: SysLog.error(traceback.format_exc())
def __join_content(cls, vid, keyword, level, msg): try: if cls.__thread_local.the_id is None: the_pid = os.getpid() the_tid = threading.current_thread().ident cls.__thread_local.the_id = '%s_%s' % (the_pid, the_tid) the_id = cls.__thread_local.the_id content = '' content += '[%s]%s' % (datetime.datetime.now().strftime( '%Y-%m-%d %H:%M:%S.%f'), cls.__sep) content += '[%s]%s' % (level, cls.__sep) content += '[%s]%s' % (the_id, cls.__sep) content += '[%s]%s' % (cls.__env, cls.__sep) content += '[%s]%s' % (vid, cls.__sep) content += '[%s]%s' % (keyword, cls.__sep) frame = inspect.currentframe().f_back.f_back info = traceback.extract_stack(f=frame, limit=1)[0] content += '[%s:%s:%s]%s' % (info[0], info[1], info[2], cls.__sep) content += '[%s]' % msg content += '\n' return content except: SysLog.error(traceback.format_exc())
try: self.handler.write(content) self.current_size = self.handler.tell() except Exception, e: self.close() self.open() SysLog.error(e.message) if self.current_size >= self.max_size: self.close() self.__rename() self.__clean() self.open() return True except: SysLog.error(traceback.format_exc()) def close(self): try: if self.handler is None: return if self.current_size <= 0: return self.handler.flush() self.handler.close() self.handler = None except: SysLog.error(traceback.format_exc()) def __rename(self): try: