summaryrefslogtreecommitdiff
path: root/kawaii_logger.py
diff options
context:
space:
mode:
authorElizabeth <me@liz.coffee>2025-05-28 23:02:02 -0700
committerElizabeth <me@liz.coffee>2025-05-28 23:02:02 -0700
commitea02ee5f0c6a977ba18d457175c23774690cfc38 (patch)
tree82f9ba7b52d8ed121897035958915f80ffb3b231 /kawaii_logger.py
parent2a0f7892fd3d00daa62a24359d2bae186092916f (diff)
downloaddotfiles-ea02ee5f0c6a977ba18d457175c23774690cfc38.tar.gz
dotfiles-ea02ee5f0c6a977ba18d457175c23774690cfc38.zip
Working dotfiles!
Diffstat (limited to 'kawaii_logger.py')
-rw-r--r--kawaii_logger.py68
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
+