mirror of
https://github.com/esphome/esphome.git
synced 2025-09-07 13:52:20 +01:00
Fix colorlog removing colors and refactor color code (#1671)
This commit is contained in:
82
esphome/log.py
Normal file
82
esphome/log.py
Normal file
@@ -0,0 +1,82 @@
|
||||
import logging
|
||||
|
||||
from esphome.core import CORE
|
||||
|
||||
|
||||
class AnsiFore:
|
||||
KEEP = ""
|
||||
BLACK = "\033[30m"
|
||||
RED = "\033[31m"
|
||||
GREEN = "\033[32m"
|
||||
YELLOW = "\033[33m"
|
||||
BLUE = "\033[34m"
|
||||
MAGENTA = "\033[35m"
|
||||
CYAN = "\033[36m"
|
||||
WHITE = "\033[37m"
|
||||
RESET = "\033[39m"
|
||||
|
||||
BOLD_BLACK = "\033[1;30m"
|
||||
BOLD_RED = "\033[1;31m"
|
||||
BOLD_GREEN = "\033[1;32m"
|
||||
BOLD_YELLOW = "\033[1;33m"
|
||||
BOLD_BLUE = "\033[1;34m"
|
||||
BOLD_MAGENTA = "\033[1;35m"
|
||||
BOLD_CYAN = "\033[1;36m"
|
||||
BOLD_WHITE = "\033[1;37m"
|
||||
BOLD_RESET = "\033[1;39m"
|
||||
|
||||
|
||||
class AnsiStyle:
|
||||
BRIGHT = "\033[1m"
|
||||
BOLD = "\033[1m"
|
||||
DIM = "\033[2m"
|
||||
THIN = "\033[2m"
|
||||
NORMAL = "\033[22m"
|
||||
RESET_ALL = "\033[0m"
|
||||
|
||||
|
||||
Fore = AnsiFore()
|
||||
Style = AnsiStyle()
|
||||
|
||||
|
||||
def color(col: str, msg: str, reset: bool = True) -> bool:
|
||||
if col and not col.startswith("\033["):
|
||||
raise ValueError("Color must be value from esphome.log.Fore")
|
||||
s = str(col) + msg
|
||||
if reset and col:
|
||||
s += str(Style.RESET_ALL)
|
||||
return s
|
||||
|
||||
|
||||
class ESPHomeLogFormatter(logging.Formatter):
|
||||
def __init__(self):
|
||||
super().__init__(fmt="%(levelname)s %(message)s", datefmt="%H:%M:%S", style="%")
|
||||
|
||||
def format(self, record):
|
||||
formatted = super().format(record)
|
||||
prefix = {
|
||||
"DEBUG": Fore.CYAN,
|
||||
"INFO": Fore.GREEN,
|
||||
"WARNING": Fore.YELLOW,
|
||||
"ERROR": Fore.RED,
|
||||
"CRITICAL": Fore.RED,
|
||||
}.get(record.levelname, "")
|
||||
return f"{prefix}{formatted}{Style.RESET_ALL}"
|
||||
|
||||
|
||||
def setup_log(debug=False, quiet=False):
|
||||
import colorama
|
||||
|
||||
if debug:
|
||||
log_level = logging.DEBUG
|
||||
CORE.verbose = True
|
||||
elif quiet:
|
||||
log_level = logging.CRITICAL
|
||||
else:
|
||||
log_level = logging.INFO
|
||||
logging.basicConfig(level=log_level)
|
||||
|
||||
logging.getLogger("urllib3").setLevel(logging.WARNING)
|
||||
|
||||
colorama.init()
|
||||
logging.getLogger().handlers[0].setFormatter(ESPHomeLogFormatter())
|
Reference in New Issue
Block a user