Spaces:
Sleeping
Sleeping
import logging | |
import sys | |
import os | |
from functools import lru_cache | |
def _configLogger(name, stdout=sys.stdout, filename=None, loglevel=logging.INFO): | |
# define a Handler which writes INFO messages or higher to the sys.stdout | |
logger = logging.getLogger(name) | |
logger.setLevel(loglevel) | |
if stdout: | |
console = logging.StreamHandler(stdout) | |
console.setLevel(loglevel) | |
console.setFormatter(logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s')) | |
logger.addHandler(console) | |
if filename: | |
dirname = os.path.dirname(filename) | |
if dirname and not os.path.exists(dirname): | |
os.makedirs(os.path.dirname(filename)) | |
logfile = logging.FileHandler(filename) | |
logfile.setLevel(loglevel) | |
logfile.setFormatter(logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s')) | |
logger.addHandler(logfile) | |
class ColoredLogger(): | |
color_dict = { | |
'black': '\033[0;30m', | |
'red': '\033[0;31m', | |
'green': '\033[0;32m', | |
'orange': '\033[0;33m', | |
'blue': '\033[0;34m', | |
'purple': '\033[0;35m', | |
'cyan': '\033[0;36m', | |
'lightgray': '\033[0;37m', | |
'darkgray': '\033[1;30m', | |
'lightred': '\033[1;31m', | |
'lightgreen': '\033[1;32m', | |
'yellow': '\033[1;33m', | |
'lightblue': '\033[1;34m', | |
'lightpurple': '\033[1;35m', | |
'lightcyan': '\033[1;36m', | |
'white': '\033[1;37m', | |
'bold': '\033[1m', | |
'endcolor': '\033[0m', | |
} | |
def __init__(self, name): | |
self.logger = logging.getLogger(name) | |
def colorize(self, msg, color): | |
return self.color_dict[color] + msg + self.color_dict['endcolor'] | |
def debug(self, msg, *args, color=None, **kwargs): | |
if color: | |
msg = self.colorize(msg, color) | |
self.logger.debug(msg, *args, **kwargs) | |
def info(self, msg, *args, color=None, **kwargs): | |
if color: | |
msg = self.colorize(msg, color) | |
self.logger.info(msg, *args, **kwargs) | |
def warning(self, msg, *args, color=None, **kwargs): | |
if color: | |
msg = self.colorize(msg, color) | |
self.logger.warning(msg, *args, **kwargs) | |
def error(self, msg, *args, color=None, **kwargs): | |
if color: | |
msg = self.colorize(msg, color) | |
self.logger.error(msg, *args, **kwargs) | |
_logger = ColoredLogger('weaver') | |
def warn_once(msg, logger=_logger): | |
# Keep track of 10 different messages and then warn again | |
logger.warning(msg) |