Source code for dataprobe.utils.logger

# dataalchemy/utils/logger.py

import logging
from rich.logging import RichHandler
from pathlib import Path
from datetime import datetime
from typing import Optional

[docs] def setup_logger(name: str = "dataprobe", log_file: Optional[Path] = None, level: str = "INFO") -> logging.Logger: """ Set up a logger with rich formatting. Args: name: Logger name log_file: Optional log file path level: Logging level Returns: Configured logger """ logger = logging.getLogger(name) logger.setLevel(getattr(logging, level.upper())) # Remove existing handlers logger.handlers.clear() # Rich console handler console_handler = RichHandler(rich_tracebacks=True) console_handler.setFormatter(logging.Formatter("%(message)s")) logger.addHandler(console_handler) # File handler if specified if log_file: file_handler = logging.FileHandler(log_file) file_handler.setFormatter( logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) ) logger.addHandler(file_handler) return logger