import sys import logging from functools import partial levels={ "debug":logging.DEBUG, "info":logging.INFO, "warning":logging.WARNING, "error":logging.error, "critical":logging.CRITICAL } defaultfmt = '%(asctime)s[%(name)s][%(levelname)s][%(filename)s:%(lineno)s]%(message)s' logfile = -1 g_levelname='info' level = levels.get('info') def create_logger(name, formater=defaultfmt, levelname=None, file=None): global logfile, level, g_levelname if logfile == -1: logfile = file ret = logging.getLogger(name) if levelname: g_levelname = levelname else: levelname = g_levelname level = levels.get(levelname, levels.get('info')) ret.setLevel(level) format = logging.Formatter(formater) file_handler = None if logfile is not None: file_handler = logging.FileHandler(logfile) else: file_handler = logging.StreamHandler() file_handler.setFormatter(format) ret.addHandler(file_handler) return ret class AppLogger: def __init__(self): self.logger = create_logger(self.__class__.__name__) self.debug = self.logger.debug self.info = self.logger.info self.warning = self.logger.warning self.error = self.logger.error self.critical = self.logger.critical self.exception = self.logger.exception