Coverage for src/pyselector/logger.py: 83%
18 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-29 10:57 -0300
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-29 10:57 -0300
1# logger.py
3from __future__ import annotations
5import logging
8class C:
9 DEBUG = "\33[37;2m"
10 BOLD_RED = "\033[31;1;6m"
11 RED = "\33[31m"
12 YELLOW = "\33[33m"
13 CYAN = "\33[36m"
14 RESET = "\33[0m"
17FMT = "[{levelname:^7}] {name}: {message}"
19FORMATS = {
20 logging.DEBUG: f"{C.DEBUG}{FMT}{C.RESET}",
21 logging.INFO: f"{C.CYAN}{FMT}{C.RESET}",
22 logging.WARNING: f"{C.YELLOW}{FMT}{C.RESET}",
23 logging.ERROR: f"{C.RED}{FMT}{C.RESET}",
24 logging.CRITICAL: f"{C.BOLD_RED}{FMT}{C.RESET}",
25}
28class CustomFormatter(logging.Formatter):
29 def format(self, record):
30 log_fmt = FORMATS[record.levelno]
31 formatter = logging.Formatter(log_fmt, style="{")
32 return formatter.format(record)
35handler = logging.StreamHandler()
36handler.setFormatter(CustomFormatter())