diff options
Diffstat (limited to 'dots_manager/kawaii_logger.py')
-rw-r--r-- | dots_manager/kawaii_logger.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dots_manager/kawaii_logger.py b/dots_manager/kawaii_logger.py new file mode 100644 index 0000000..f82da23 --- /dev/null +++ b/dots_manager/kawaii_logger.py @@ -0,0 +1,61 @@ +import logging +import sys +import random + +MOOD_EMOTICONS = { + "debug": ["(=^・^=)", "(=・ェ・=)", "(=^-ω-^=)", "(=^‥^=)"], + "info": ["(^• ω •^)", "(=^・ω・^)y=", "(≚ᄌ≚)", "(。♥‿♥。)"], + "warning": ["(; ̄Д ̄)", "(¬_¬;)", "(・ัω・ั)", "(・_・ヾ"], + "error": ["(╥﹏╥)", "(≧Д≦)", "(;′⌒`)", "(T▽T)"], +} + +MOOD_SUFFIXES = { + "_happy": ["(ノ◕ヮ◕)ノ*:・゚✧", "(๑˃ᴗ˂)ﻭ", "(^▽^)", "( ˘⌣˘)♡(˘⌣˘ )"], + "_sad": ["(。•́︿•̀。)", "(╯︵╰,)", "(ಥ﹏ಥ)", "(︶︹︺)"], + "_anxious": ["(ノдヽ)", "(◎_◎;)", "(・_・;)", "(゚Д゚;)"], +} + +LEVEL_COLORS = { + logging.DEBUG: "\033[95m", # light magenta + logging.INFO: "\033[96m", # light cyan + logging.WARNING: "\033[93m", # light yellow + logging.ERROR: "\033[91m", # light red + logging.CRITICAL: "\033[35m", # magenta +} + +RESET_COLOR = "\033[0m" + + +class KawaiiFormatter(logging.Formatter): + def format(self, record): + level = record.levelname.lower() + color = LEVEL_COLORS.get(record.levelno, "") + base_emotes = MOOD_EMOTICONS.get(level, []) + mood_emotes = [] + + emote_pool = mood_emotes if mood_emotes else base_emotes + emote = random.choice(emote_pool) if emote_pool else "(・ω・)" + + message = record.msg.strip() + ts = self.formatTime(record, "%Y-%m-%d %H:%M:%S") + lvl = record.levelname + filename = record.filename + lineno = str(record.lineno) + + formatted = f"[{ts}] {color}[{lvl} {filename}:{lineno}]{RESET_COLOR} {color}{message}{RESET_COLOR} {emote}" + return f"{formatted}{RESET_COLOR}" + + +def setup_logger(verbose: bool = False) -> logging.Logger: + """sets up a super cute logger with sparkles and cat faces ✨""" + logger = logging.getLogger("dotfiles") + logger.setLevel(logging.DEBUG if verbose else logging.INFO) + + handler = logging.StreamHandler(sys.stdout) + handler.setFormatter(KawaiiFormatter()) + + logger.handlers.clear() + logger.addHandler(handler) + logger.propagate = False + + return logger |