ups/lib/log.py
ngn ab580d6a18
Some checks failed
format / build (push) Failing after 6s
initial commit
Signed-off-by: ngn <ngn@ngn.tf>
2025-05-02 18:20:24 +03:00

41 lines
1023 B
Python

from time import strftime, localtime
from sys import stdout, stderr
from os import path
import inspect
BLUE = "\033[34m"
YELLOW = "\033[33m"
RED = "\033[31m"
RESET = "\033[0m"
def _log(color: str, level: str, msg: str, err=False) -> int:
frame = inspect.stack()[2]
filename = path.basename(inspect.getmodule(frame[0]).__file__)
timestr = strftime("%H:%M:%S", localtime())
funcstr = "%s:%d" % (filename, frame.lineno)
write = stderr.write if err else stdout.write
return write(
"%s[%s]%s %s %s: %s\n"
% (color, level.lower(), RESET, timestr, funcstr, msg)
)
def info(msg: str) -> None:
_log(BLUE, "info", msg)
def warn(msg: str) -> None:
_log(YELLOW, "warn", msg, err=True)
def fail(msg: str, exception=None) -> None:
size = _log(RED, "fail", msg, err=True)
if exception is not None:
size -= len(msg) + len(RED) + len(RESET) + 1 + len("details: ")
stderr.write(" " * size + "details: ")
stderr.write(exception.__str__() + "\n")