|
@@ -0,0 +1,51 @@
|
|
|
+import logging
|
|
|
+
|
|
|
+import termcolor
|
|
|
+
|
|
|
+from . import __appname__
|
|
|
+
|
|
|
+
|
|
|
+COLORS = {
|
|
|
+ 'WARNING': 'yellow',
|
|
|
+ 'INFO': 'white',
|
|
|
+ 'DEBUG': 'blue',
|
|
|
+ 'CRITICAL': 'red',
|
|
|
+ 'ERROR': 'red',
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+class ColoredFormatter(logging.Formatter):
|
|
|
+
|
|
|
+ def __init__(self, msg, use_color=True):
|
|
|
+ logging.Formatter.__init__(self, msg)
|
|
|
+ self.use_color = use_color
|
|
|
+
|
|
|
+ def format(self, record):
|
|
|
+ levelname = record.levelname
|
|
|
+ if self.use_color and levelname in COLORS:
|
|
|
+ colored_levelname = termcolor.colored(
|
|
|
+ '[{}]'.format(levelname), color=COLORS[levelname]
|
|
|
+ )
|
|
|
+ record.levelname = colored_levelname
|
|
|
+ return logging.Formatter.format(self, record)
|
|
|
+
|
|
|
+
|
|
|
+class ColoredLogger(logging.Logger):
|
|
|
+
|
|
|
+ fmt_filename = termcolor.colored('%(filename)s', attrs={'bold': True})
|
|
|
+ FORMAT = '%(levelname)s %(message)s ({}:%(lineno)d)'.format(fmt_filename)
|
|
|
+
|
|
|
+ def __init__(self, name):
|
|
|
+ logging.Logger.__init__(self, name, logging.INFO)
|
|
|
+
|
|
|
+ color_formatter = ColoredFormatter(self.FORMAT)
|
|
|
+
|
|
|
+ console = logging.StreamHandler()
|
|
|
+ console.setFormatter(color_formatter)
|
|
|
+
|
|
|
+ self.addHandler(console)
|
|
|
+ return
|
|
|
+
|
|
|
+
|
|
|
+logging.setLoggerClass(ColoredLogger)
|
|
|
+logger = logging.getLogger(__appname__)
|