blob: 6efb89059c43b0265f6bec3eee8ccc0513ed7270 (
plain)
- import logging
- import time
- class LogFormatter(logging.Formatter):
- def __init__(self, docolor, timestamps=False):
- super().__init__()
- self.docolor = docolor
- self.timestamps = timestamps
- def formatMessage(self, record):
- if self.docolor:
- c_lvl = 33
- c_mod = 32
- c_msg = 0
- if record.levelno == logging.WARNING:
- c_lvl = 31
- # c_mod = 33
- c_msg = 33
- elif record.levelno > logging.WARNING:
- c_lvl = 31
- c_mod = 31
- c_msg = 31
- fmt = ''.join([
- '\x1b[%dm' % c_lvl, # set levelname color
- '%(levelname)8s', # print levelname
- '\x1b[0m', # reset formatting
- '\x1b[%dm' % c_mod, # set name color
- ' %(name)s', # print name
- '\x1b[%dm' % c_msg, # set message color
- ': %(message)s', # print message
- '\x1b[0m' # reset formatting
- ])
- else:
- fmt = '%(levelname)8s %(name)s: %(message)s'
- if self.timestamps:
- fmt = '%(asctime)s ' + fmt
- if 'asctime' not in record.__dict__:
- record.__dict__['asctime'] = time.strftime(
- "%Y-%m-%d %H:%M:%S",
- time.localtime(record.__dict__['created'])
- )
- return fmt % record.__dict__
- class LogHandler(logging.StreamHandler):
- def __init__(self, docolor, timestamps):
- super().__init__()
- self.setFormatter(LogFormatter(docolor, timestamps))
|