WIP: coloured logins
authorŁukasz Stelmach <l.stelmach@samsung.com>
Tue, 26 Sep 2023 16:01:16 +0000 (18:01 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Wed, 27 Sep 2023 11:26:24 +0000 (13:26 +0200)
Change-Id: I1068c64025a549c4ad430ab77d3913b1a8e8b33e
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
scripts/tizen/sd_fusing.py

index 9475704..2a79df0 100755 (executable)
@@ -21,6 +21,29 @@ Format = False
 Device = ""
 File = ""
 
+class ColorFormatter(logging.Formatter):
+    _levelToColor = {
+        logging.CRITICAL: "\x1b[35;1m",
+        logging.ERROR: "\x1b[33;1m",
+        logging.WARNING: "\x1b[33;1m",
+        logging.INFO: "\x1b[0m",
+        logging.DEBUG: "\x1b[30;1m",
+        logging.NOTSET: "\x1b[30;1m"
+    }
+    def format(self, record):
+        record.levelcolor = self._levelToColor[record.levelno]
+        record.msg = record.msg
+        return logging.Formatter.format(self, record)
+
+class ColorStreamHandler(logging.StreamHandler):
+    def __init__(self, stream=None, format=None, datefmt=None, style='%', cformat=None):
+        logging.StreamHandler.__init__(self, stream)
+        if os.isatty(self.stream.fileno()):
+            self.formatter = ColorFormatter(cformat, datefmt, style)
+            self.terminator = "\x1b[0m\n"
+        else:
+            self.formatter = logging.Formatter(format, datefmt, style)
+
 class Partition:
     def __init__(self, name, size, start=None, ptype=None, fstype="raw", bootable=False):
         self.name = name
@@ -615,7 +638,13 @@ if __name__ == '__main__':
         for k,v in TARGETS.items():
             print(f"  {k:6}  {v.long_name}")
         sys.exit(0)
+
+    conh = ColorStreamHandler(format='%(asctime)s %(levelname)s:%(message)s',
+                            cformat='%(asctime)s: %(levelcolor)s%(message)s',
+                            datefmt='%Y-%m-%dT%H:%M:%S')
+    log_handlers = [conh]
     logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s',
+                        handlers=log_handlers,
                         level=args.log_level.upper())
 
     check_args(args)