Coverage for arclith / adapters / output / console / logger.py: 77%
13 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-25 15:02 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-25 15:02 +0100
1import sys
2from typing import Any
4from loguru import logger as loguru_logger
6from arclith.domain.ports.logger import Logger, LogLevel
8_LEVEL_EMOJI = {
9 "DEBUG": "🔬",
10 "INFO": "💬",
11 "WARNING": "⚠️",
12 "ERROR": "❌",
13 "CRITICAL": "🔥",
14}
16_FORMAT = "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | {extra[level_emoji]} <level>{level: <8}</level> | <level>{message}</level> | {extra[meta]}"
18loguru_logger.remove()
19loguru_logger.add(sys.stderr, format = _FORMAT)
22class ConsoleLogger(Logger):
23 def log(self, level: LogLevel, message: str, **metadata: Any) -> None:
24 emoji = _LEVEL_EMOJI.get(level.value, "💬")
25 bound = loguru_logger.bind(level_emoji = emoji, meta = metadata)
26 getattr(bound, level.value.lower())(message)