import logging
import os
from pathlib import Path


_LOGGER_NAME = "fireflies_clone"
_DEFAULT_LOG_PATH = Path(
    os.getenv("APP_LOG_FILE", Path(__file__).resolve().parent / "logs" / "application.log")
)


def _configure_logger() -> logging.Logger:
    logger = logging.getLogger(_LOGGER_NAME)
    if logger.handlers:
        return logger

    _DEFAULT_LOG_PATH.parent.mkdir(parents=True, exist_ok=True)

    handler = logging.FileHandler(_DEFAULT_LOG_PATH, encoding="utf-8")
    handler.setFormatter(logging.Formatter("%(asctime)s | %(levelname)s | %(message)s"))

    logger.setLevel(os.getenv("APP_LOG_LEVEL", "INFO").upper())
    logger.addHandler(handler)
    logger.propagate = False
    return logger


def get_logger(name: str | None = None) -> logging.Logger:
    base_logger = _configure_logger()
    if not name:
        return base_logger
    return base_logger.getChild(name)
