diff --git a/templates/logger.py b/templates/logger.py new file mode 100644 index 0000000..5484868 --- /dev/null +++ b/templates/logger.py @@ -0,0 +1,44 @@ +from pybricks.tools import StopWatch + +class Logger: + def __init__(self, verboseness=7): + self.time = StopWatch() + self.time.pause() + self.verboseness = verboseness + self.lvldict = { + 0: "FATAL", + 1: "ALERT", + 2: "CRIT", + 3: "ERR", + 4: "WARNING", + 5: "NOTICE", + 6: "INFO", + 7: "DEBUG" + } + + def start(self): + self.time.reset() + self.time.resume() + + def log(self, message, level, origin): + if level <= self.verboseness: + ms = self.time.time() + timestamp = "{:02d}:{:02d}.{:03d}".format( + (ms // 60000) % 60, + (ms // 1000) % 60, + ms % 1000 + ) + label = self.lvldict.get(level, "UNKNOWN") + padding = " " * (7 - len(label)) + print("[{}] {}{} [{}] {}".format(timestamp, label, padding, origin, message)) + def fatal(self, message, origin): self.log(message, 0, origin) + def alert(self, message, origin): self.log(message, 1, origin) + def crit(self, message, origin): self.log(message, 2, origin) + def err(self, message, origin): self.log(message, 3, origin) + def warning(self, message, origin): self.log(message, 4, origin) + def notice(self, message, origin): self.log(message, 5, origin) + def info(self, message, origin): self.log(message, 6, origin) + def debug(self, message, origin): self.log(message, 7, origin) + def crash(self, message, origin): + self.log(message, 0, origin) + raise FatalLoggerError("[FATAL] [{}] {}".format(origin, message)) \ No newline at end of file