import colorama
import logging
import tabulate
from six import print_
LEVELS = {
logging.DEBUG: 'DEBG',
logging.INFO: 'INFO',
logging.WARNING: 'WARN',
logging.ERROR: 'ERRR',
logging.CRITICAL: 'CRIT'
}
COLORS = {
logging.DEBUG: colorama.Fore.WHITE,
logging.INFO: colorama.Fore.GREEN,
logging.WARNING: colorama.Fore.YELLOW,
logging.ERROR: colorama.Fore.RED,
logging.CRITICAL: colorama.Fore.RED
}
COLOR_RESET = colorama.Fore.RESET + colorama.Back.RESET + colorama.Style.RESET_ALL
[docs]def RED(s):
return colorama.Fore.RED + s + COLOR_RESET
[docs]def GREEN(s):
return colorama.Fore.GREEN + s + COLOR_RESET
[docs]def BLUE(s):
return colorama.Fore.BLUE + s + COLOR_RESET
[docs]def WHITE(s):
return colorama.Fore.WHITE + s + COLOR_RESET
[docs]class StreamHandler(logging.StreamHandler):
def __init__(self, *args, **kwargs):
super(StreamHandler, self).__init__(*args, **kwargs)
self.setFormatter(LogFormatter())
[docs]def create_logger(name = None, handler = None):
name = name or 'ducky'
logger = logging.getLogger(name)
if handler:
logger.addHandler(handler)
def __table(table, fn = None, **kwargs):
fn = fn or logger.info
for line in tabulate.tabulate(table, headers = 'firstrow', tablefmt = 'simple', numalign = 'right', **kwargs).split('\n'):
fn(line)
logger.table = __table
return logger