Coverage for arclith / domain / ports / logger.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-03-25 15:02 +0100

1from abc import ABC, abstractmethod 

2from enum import Enum 

3from typing import Any 

4 

5 

6class LogLevel(Enum): 

7 DEBUG = "DEBUG" 

8 INFO = "INFO" 

9 WARNING = "WARNING" 

10 ERROR = "ERROR" 

11 CRITICAL = "CRITICAL" 

12 

13 

14class Logger(ABC): 

15 @abstractmethod 

16 def log(self, level: LogLevel, message: str, **metadata: Any) -> None: 

17 pass # pragma: no cover 

18 

19 def debug(self, message: str, **metadata: Any) -> None: 

20 self.log(LogLevel.DEBUG, message, **metadata) 

21 

22 def info(self, message: str, **metadata: Any) -> None: 

23 self.log(LogLevel.INFO, message, **metadata) 

24 

25 def warning(self, message: str, **metadata: Any) -> None: 

26 self.log(LogLevel.WARNING, message, **metadata) 

27 

28 def error(self, message: str, **metadata: Any) -> None: 

29 self.log(LogLevel.ERROR, message, **metadata) 

30 

31 def critical(self, message: str, **metadata: Any) -> None: 

32 self.log(LogLevel.CRITICAL, message, **metadata) 

33