1""" 2Custom log output 3""" 4 5import sys 6import logging 7 8TEXT_NORMAL = 0 9TEXT_BOLD = 1 10TEXT_RED = 31 11TEXT_GREEN = 32 12TEXT_YELLOW = 33 13TEXT_BLUE = 34 14TEXT_MAGENTA = 35 15TEXT_CYAN = 36 16 17 18def get_logger(): 19 return logging.getLogger('exifread') 20 21 22def setup_logger(debug, color): 23 """Configure the logger.""" 24 if debug: 25 log_level = logging.DEBUG 26 else: 27 log_level = logging.INFO 28 29 logger = logging.getLogger('exifread') 30 stream = Handler(log_level, debug, color) 31 logger.addHandler(stream) 32 logger.setLevel(log_level) 33 34 35class Formatter(logging.Formatter): 36 37 def __init__(self, debug=False, color=False): 38 self.color = color 39 self.debug = debug 40 if self.debug: 41 log_format = '%(levelname)-6s %(message)s' 42 else: 43 log_format = '%(message)s' 44 logging.Formatter.__init__(self, log_format) 45 46 def format(self, record): 47 if self.debug and self.color: 48 if record.levelno >= logging.CRITICAL: 49 color = TEXT_RED 50 elif record.levelno >= logging.ERROR: 51 color = TEXT_RED 52 elif record.levelno >= logging.WARNING: 53 color = TEXT_YELLOW 54 elif record.levelno >= logging.INFO: 55 color = TEXT_GREEN 56 elif record.levelno >= logging.DEBUG: 57 color = TEXT_CYAN 58 else: 59 color = TEXT_NORMAL 60 record.levelname = "\x1b[%sm%s\x1b[%sm" % (color, record.levelname, TEXT_NORMAL) 61 return logging.Formatter.format(self, record) 62 63 64class Handler(logging.StreamHandler): 65 66 def __init__(self, log_level, debug=False, color=False): 67 self.color = color 68 self.debug = debug 69 logging.StreamHandler.__init__(self, sys.stdout) 70 self.setFormatter(Formatter(debug, color)) 71 self.setLevel(log_level) 72""" 73 def emit(self, record): 74 record.msg = "\x1b[%sm%s\x1b[%sm" % (TEXT_BOLD, record.msg, TEXT_NORMAL) 75 logging.StreamHandler.emit(self, record) 76"""