Source code for isimple.core.log

import re
import logging


__log_file__ = '.log'
__lvl_global__ = logging.DEBUG
__lvl_console__ = logging.DEBUG
__lvl_file__ = logging.DEBUG


VDEBUG = 9
logging.addLevelName(VDEBUG, "VDEBUG")


[docs]def vdebug(self, message, *args, **kwargs): if self.isEnabledFor(VDEBUG): self._log(VDEBUG, message, *args, **kwargs)
[docs]class CustomLogger(logging.Logger): _pattern = re.compile('(\n|\r|\t| [ ]+)')
[docs] def debug(self, msg, *args, **kwargs): super().debug(self._remove_newlines(msg))
[docs] def info(self, msg, *args, **kwargs): super().info(self._remove_newlines(msg))
[docs] def warning(self, msg, *args, **kwargs): super().warning(self._remove_newlines(msg))
[docs] def error(self, msg, *args, **kwargs): super().error(self._remove_newlines(msg))
[docs] def critical(self, msg, *args, **kwargs): super().critical(self._remove_newlines(msg))
[docs] def vdebug(self, message, *args, **kwargs): if self.isEnabledFor(VDEBUG): self._log( VDEBUG, self._remove_newlines(message), *args, **kwargs )
def _remove_newlines(self, msg: str) -> str: return self._pattern.sub(' ', msg)
[docs]def get_logger(name: str = __name__) -> CustomLogger: log = CustomLogger(name) log.setLevel(__lvl_global__) _console_handler = logging.StreamHandler() _console_handler.setLevel(__lvl_console__) _file_handler = logging.FileHandler(__log_file__) _file_handler.setLevel(__lvl_file__) _formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s') _console_handler.setFormatter(_formatter) _file_handler.setFormatter(_formatter) log.addHandler(_console_handler) log.addHandler(_file_handler) return log