Files
pynamics/templates/logger.py

44 lines
1.6 KiB
Python

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