diff options
author | Elizabeth <me@liz.coffee> | 2025-05-28 23:02:02 -0700 |
---|---|---|
committer | Elizabeth <me@liz.coffee> | 2025-05-28 23:02:02 -0700 |
commit | ea02ee5f0c6a977ba18d457175c23774690cfc38 (patch) | |
tree | 82f9ba7b52d8ed121897035958915f80ffb3b231 /kawaii_logger.py | |
parent | 2a0f7892fd3d00daa62a24359d2bae186092916f (diff) | |
download | dotfiles-ea02ee5f0c6a977ba18d457175c23774690cfc38.tar.gz dotfiles-ea02ee5f0c6a977ba18d457175c23774690cfc38.zip |
Working dotfiles!
Diffstat (limited to 'kawaii_logger.py')
-rw-r--r-- | kawaii_logger.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/kawaii_logger.py b/kawaii_logger.py new file mode 100644 index 0000000..9ef3491 --- /dev/null +++ b/kawaii_logger.py @@ -0,0 +1,68 @@ +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 = [] + + msg_lower = record.msg.lower() + for suffix, emotes in MOOD_SUFFIXES.items(): + if suffix in msg_lower: + mood_emotes = emotes + record.msg = record.msg.replace(suffix, "") + break + + emote_pool = mood_emotes if mood_emotes else base_emotes + emote = random.choice(emote_pool) if emote_pool else "(・ω・)" + + message = record.msg.lower().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}]{RESET_COLOR} [{filename}:{lineno}] {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 + |