def setup_logging(logger_name, verbose_level: int=0, filename: str=None): level = None if verbose_level == -1: level = logging.CRITICAL if verbose_level is 0: level = logging.INFO elif verbose_level >= 1: level = logging.DEBUG formatter = logging.Formatter(fmt="%(asctime)-10s%(message)s", datefmt="%H:%M:%S") stdout_handler = ColorizingStreamHandler() stdout_handler.setFormatter(formatter) stdout_handler.stream = sys.stderr if not filename: filename = 'last.log' file_handler = logging.FileHandler(filename=filename, mode='w') file_handler.setFormatter(formatter) root = logging.getLogger() root.addHandler(stdout_handler) root.addHandler(file_handler) root.setLevel(level) return logging.getLogger(logger_name)
~~~ This module customize the logging handler so that we can acheive a colorful output Usage: >>> import log >>> logger = log.getlogger("TestLogger") >>> logger.info("this is some information") [time]<TestLogger>INFO:this is some information """ import logging from ansistrm import ColorizingStreamHandler handler = ColorizingStreamHandler() handler.setFormatter( logging.Formatter("[%(asctime)s]<%(name)s>%(levelname)s:%(message)s", None)) handler.setLevel(logging.DEBUG) root = logging.getLogger() root.addHandler(handler) import logging.handlers def getlogger(name, filename='/tmp/pythoner_server.log', level=logging.DEBUG): logger = logging.getLogger(name) handler = logging.handlers.RotatingFileHandler(filename, maxBytes=2**30,
logging.Handler.__init__(self) def emit(self, record): if record.levelno == 40 and self.ignoreError == False: exit(1) logging.addLevelName(CustomLoggingLevel.BASIC_DEBUG, "BASIC DEBUG") logging.addLevelName(CustomLoggingLevel.IMAGE_DEBUG, "IMAGE DEBUG") logging.addLevelName(CustomLoggingLevel.ASCII_DATA, "ASCII DATA") logging.addLevelName(CustomLoggingLevel.OTHER_DATA, "OTHER DATA") logging.addLevelName(CustomLoggingLevel.EXTRA_DATA, "EXTRA DATA") logging.addLevelName(CustomLoggingLevel.STEGO_DATA, "STEGO DATA") logging.addLevelName(CustomLoggingLevel.IMAGE_INFO, "IMAGE INFO") stream_handler = ColorizingStreamHandler(sys.stdout) stream_handler.level_map[logging.getLevelName("BASIC DEBUG")] = (None, "cyan", False) stream_handler.level_map[logging.getLevelName("IMAGE DEBUG")] = (None, "magenta", False) formatter = logging.Formatter('[%(asctime)s][%(levelname)s] %(message)s', \ '%H:%M:%S') stream_handler.setFormatter(formatter) errorHandler = ErrorHandler() LOGGER = logging.getLogger('StegoDetector') LOGGER.setLevel(1)