68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from typing import Protocol, Optional, Callable
|
|
from src.application.domain.enums.log_format import LogFormat
|
|
from src.application.domain.enums.log_level import LogLevel
|
|
|
|
|
|
class ILogger(Protocol):
|
|
"""Interface for synchronous logger with ContextVar support for trace_id."""
|
|
|
|
log_format: LogFormat
|
|
min_level: LogLevel
|
|
id_generator: Optional[Callable[[], str]]
|
|
instance_id: str
|
|
|
|
def set_format(self, log_format: LogFormat) -> None:
|
|
"""Set log format using LogFormat enum"""
|
|
...
|
|
|
|
def set_min_level(self, level: LogLevel) -> None:
|
|
"""Set minimum log level"""
|
|
...
|
|
|
|
def new_trace_id(self) -> str:
|
|
"""Create and set new trace_id in context"""
|
|
...
|
|
|
|
def set_trace_id(self, trace_id: str) -> None:
|
|
"""Set existing trace_id in context"""
|
|
...
|
|
|
|
def get_trace_id(self) -> str:
|
|
"""Get current trace_id from context"""
|
|
...
|
|
|
|
def clear_trace_id(self) -> None:
|
|
"""Clear the trace_id in the context"""
|
|
...
|
|
|
|
def set_instance_id(self, instance_id: str) -> None:
|
|
"""Set service instance id (ULID recommended)"""
|
|
...
|
|
|
|
def get_instance_id(self) -> str:
|
|
"""Get current service instance id"""
|
|
...
|
|
|
|
def debug(self, message: str) -> None:
|
|
"""Log debug message"""
|
|
...
|
|
|
|
def info(self, message: str) -> None:
|
|
"""Log info message"""
|
|
...
|
|
|
|
def warning(self, message: str) -> None:
|
|
"""Log warning message"""
|
|
...
|
|
|
|
def error(self, message: str) -> None:
|
|
"""Log error message"""
|
|
...
|
|
|
|
def critical(self, message: str) -> None:
|
|
"""Log critical message"""
|
|
...
|
|
|
|
def exception(self, message: str) -> None:
|
|
"""Log exception with traceback"""
|
|
... |