Browse Source

Create logger.py

LaraStuStu 5 years ago
parent
commit
d245b75b66
1 changed files with 51 additions and 0 deletions
  1. 51 0
      DataAnnotation/labelme/labelme/logger.py

+ 51 - 0
DataAnnotation/labelme/labelme/logger.py

@@ -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__)