Shamik's picture
feat: adding project files.
3c99d4f unverified
import logging
from datetime import datetime
from pathlib import Path
from rich.logging import RichHandler
def get_logger(log_name: str, log_dir: Path) -> logging.Logger:
"""
Returns a logger with RichHandler and file handler.
Args:
log_name (str): Name prefix for the log file.
log_dir (Path): Directory to store log files.
Returns:
logging.Logger: Configured logger instance.
"""
log_dir.mkdir(parents=True, exist_ok=True)
date_str = datetime.now().strftime(format="%m_%d_%Y")
log_file = log_dir / f"{log_name}_{date_str}.log"
logger = logging.getLogger(name=log_name)
logger.setLevel(level=logging.INFO)
logger.handlers.clear()
# Rich console handler
rich_handler = RichHandler(
rich_tracebacks=True, show_time=True, show_level=True, show_path=True
)
rich_handler.setLevel(level=logging.INFO)
# File handler
file_handler = logging.FileHandler(filename=log_file, encoding="utf-8")
file_handler.setLevel(level=logging.INFO)
formatter = logging.Formatter(
fmt="%(asctime)s | %(levelname)s | %(name)s | %(message)s"
)
file_handler.setFormatter(formatter)
logger.addHandler(rich_handler)
logger.addHandler(file_handler)
logger.propagate = False
return logger