This repository has been archived on 2023-04-13. You can view files and clone it, but cannot push or open issues or pull requests.
pylogger/src/lib/Logger.py

42 lines
1.7 KiB
Python

import sys
from .Log import Log
from .LogLevels import basic_levels, Level
from .console import Utils
import inspect
class Logger:
def __init__(self, name: str = "Generic", do_colors = True, output = sys.stdout):
self.name = name
self.do_colors = do_colors
self.output = output
def _print(self, data: str, terminator: str = '\r\n'):
self.output.write(data + terminator)
def _log(self, log: Log):
l_pre = f"{log.level.short} [{log.format_time('%Y-%m-%d %H:%M:%S')}] <{log.class_str() or log.file}>"
l_str = f"{log.format_text()}"
if self.do_colors:
self._print(f"{log.level.color}{l_pre}{Utils.reset} {l_str}")
else:
self._print(f'{l_pre} {l_str}')
def custom(self, level: Level, text: str, *args, _object=None, _file=inspect.stack()[1].filename):
self._log(Log(level, text, *args, _object=None, _file=inspect.stack()[1].filename))
def debug(self, text: str, *args, _object=None):
self._log(Log(basic_levels['DEBUG'], text, *args, _object=_object, _file=inspect.stack()[1].filename))
def info(self, text: str, *args, _object=None):
self._log(Log(basic_levels['INFO'], text, *args, _object=_object, _file=inspect.stack()[1].filename))
def warn(self, text: str, *args, _object=None):
self._log(Log(basic_levels['WARNING'], text, *args, _object=_object, _file=inspect.stack()[1].filename))
def err(self, text: str, *args, _object=None):
self._log(Log(basic_levels['ERROR'], text, *args, _object=_object, _file=inspect.stack()[1].filename))
def fatal(self, text: str, *args, _object=None):
self._log(Log(basic_levels['FATAL'], text, *args, _object=_object, _file=inspect.stack()[1].filename))