Files
musicseerr/backend/infrastructure/logging_helper.py
T
2026-04-03 15:53:00 +01:00

44 lines
1.7 KiB
Python

import logging
from typing import Optional
logger = logging.getLogger(__name__)
def format_mbid(mbid: str) -> str:
return f"{mbid[:8]}..." if len(mbid) >= 8 else mbid
def log_cache_hit(entity_type: str, mbid: str, source: Optional[str] = None) -> None:
source_info = f" from {source}" if source else ""
logger.info(f"Cache hit: {entity_type} {format_mbid(mbid)}{source_info}")
def log_cache_miss(entity_type: str, mbid: str, source: Optional[str] = None) -> None:
source_info = f" in {source}" if source else ""
logger.debug(f"Cache miss: {entity_type} {format_mbid(mbid)}{source_info}")
def log_fetch_start(entity_type: str, mbid: str, source: str) -> None:
logger.info(f"Fetching {entity_type} {format_mbid(mbid)} from {source}")
def log_fetch_success(entity_type: str, mbid: str, source: str) -> None:
logger.info(f"Fetch success: {entity_type} {format_mbid(mbid)} from {source}")
def log_fetch_failed(entity_type: str, mbid: str, source: str, reason: Optional[str] = None) -> None:
reason_info = f": {reason}" if reason else ""
logger.warning(f"Fetch failed: {entity_type} {format_mbid(mbid)} from {source}{reason_info}")
def log_image_fetch(action: str, entity_type: str, mbid: str, source: str) -> None:
logger.info(f"Image {action}: {entity_type} {format_mbid(mbid)} from {source}")
def log_http_error(entity_type: str, mbid: str, source: str, status_code: int) -> None:
logger.warning(f"HTTP {status_code}: {entity_type} {format_mbid(mbid)} from {source}")
def log_exception(entity_type: str, mbid: str, operation: str, error: Exception) -> None:
logger.error(f"Exception in {operation} for {entity_type} {format_mbid(mbid)}: {error}")