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

1import sys 

2from typing import Any 

3 

4from loguru import logger as loguru_logger 

5 

6from arclith.domain.ports.logger import Logger, LogLevel 

7 

8_LEVEL_EMOJI = { 

9 "DEBUG": "🔬", 

10 "INFO": "💬", 

11 "WARNING": "⚠️", 

12 "ERROR": "❌", 

13 "CRITICAL": "🔥", 

14} 

15 

16_FORMAT = "<green>{time:YYYY-MM-DD HH:mm:ss}</green> | {extra[level_emoji]} <level>{level: <8}</level> | <level>{message}</level> | {extra[meta]}" 

17 

18loguru_logger.remove() 

19loguru_logger.add(sys.stderr, format = _FORMAT) 

20 

21 

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)