浏览代码

Update logger format similar to loguru

Kentaro Wada 5 年之前
父节点
当前提交
d1a0092557
共有 1 个文件被更改,包括 24 次插入8 次删除
  1. 24 8
      labelme/logger.py

+ 24 - 8
labelme/logger.py

@@ -1,3 +1,4 @@
+import datetime
 import logging
 
 import termcolor
@@ -16,24 +17,39 @@ COLORS = {
 
 class ColoredFormatter(logging.Formatter):
 
-    def __init__(self, msg, use_color=True):
-        logging.Formatter.__init__(self, msg)
+    def __init__(self, fmt, use_color=True):
+        logging.Formatter.__init__(self, fmt)
         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
+
+            def colored(text):
+                return termcolor.colored(
+                    text,
+                    color=COLORS[levelname],
+                    attrs={'bold': True},
+                )
+
+            record.levelname2 = colored('{:<8}'.format(record.levelname))
+            record.message2 = colored(record.msg)
+
+            asctime2 = datetime.datetime.fromtimestamp(record.created)
+            record.asctime2 = termcolor.colored(asctime2, color='green')
+
+            record.module2 = termcolor.colored(record.module, color='cyan')
+            record.funcName2 = termcolor.colored(record.funcName, color='cyan')
+            record.lineno2 = termcolor.colored(record.lineno, color='cyan')
         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)
+    FORMAT = (
+        '%(asctime2)s | %(levelname2)s | '
+        '%(module2)s:%(funcName2)s:%(lineno2)s - %(message2)s'
+    )
 
     def __init__(self, name):
         logging.Logger.__init__(self, name, logging.INFO)