glide-the
Add large files to Git LFS
04ffec9
raw
history blame
1.68 kB
import logging
import colorama
from speakers.common.general import replace_prefix
ROOT_TAG = 'speakers'
class Formatter(logging.Formatter):
def formatMessage(self, record: logging.LogRecord) -> str:
if record.levelno >= logging.ERROR:
self._style._fmt = f'{colorama.Fore.RED}%(levelname)s:{colorama.Fore.RESET} [%(name)s] %(message)s'
elif record.levelno >= logging.WARN:
self._style._fmt = f'{colorama.Fore.YELLOW}%(levelname)s:{colorama.Fore.RESET} [%(name)s] %(message)s'
else:
self._style._fmt = '[%(name)s] %(message)s'
return super().formatMessage(record)
class Filter(logging.Filter):
def filter(self, record: logging.LogRecord) -> bool:
# Try to filter out logs from imported modules
if not record.name.startswith(ROOT_TAG):
return False
# Shorten the name
record.name = replace_prefix(record.name, ROOT_TAG + '.', '')
return super().filter(record)
logging.basicConfig(level=logging.INFO)
root = logging.getLogger(ROOT_TAG)
for h in logging.root.handlers:
h.setFormatter(Formatter())
h.addFilter(Filter())
def set_log_level(level):
root.setLevel(level)
def get_logger(name: str):
return root.getChild(name)
file_handlers = {}
def add_file_logger(path: str):
if path in file_handlers:
return
file_handlers[path] = logging.FileHandler(path, encoding='utf8')
logging.root.addHandler(file_handlers[path])
def remove_file_logger(path: str):
if path in file_handlers:
logging.root.removeHandler(file_handlers[path])
file_handlers[path].close()
del file_handlers[path]