]> git.ipfire.org Git - nitsi.git/blobdiff - src/nitsi/logger.py
Format the name in the log file always with the same length
[nitsi.git] / src / nitsi / logger.py
index f492bda92a59bb9573e53c7f0d9fbad26d74ab54..7990732e5e3dfe5c6f77e1bf03b7d970043e7318 100644 (file)
@@ -35,3 +35,41 @@ def init_logging(path):
         os.mkdir(time_dir)
 
     return time_dir
+
+
+class TestFormatter(logging.Formatter):
+    def __init__(self, start_time=None, name=None, longest_machine_name=10):
+        super().__init__(fmt="[%(asctime)s] %(message)s")
+        logger.debug("Initiating TestFormatter for")
+        if start_time == None:
+            self.starttime = time.time()
+        else:
+            self.starttime = start_time
+
+        if name == None:
+            self.name = ""
+        else:
+            self.name = name
+
+        self.longest_machine_name = longest_machine_name
+
+    def converter(self, recordtime):
+
+        # This returns a timestamp relatively to the time when we started
+        # the test.
+
+        recordtime -= self.starttime
+
+        return time.gmtime(recordtime)
+
+    def format(self, record):
+        return "[{}][{:^{align}}] {}".format(self.formatTime(record),
+                                                self.name,
+                                                record.getMessage(),
+                                                align=self.longest_machine_name)
+
+    def formatTime(self, record, datefmt=None):
+        ct = self.converter(record.created)
+        t = time.strftime("%H:%M:%S", ct)
+        s = "{}.{:03d}".format(t, round(record.msecs,None))
+        return s