import logging
import os
from logging.handlers import RotatingFileHandler

LOG_DIR = "logs"
LOG_FILE = "app.log"
LOG_PATH = os.path.join(LOG_DIR, LOG_FILE)


class LoggerFactory:
    # logger.info("Connected with result code %s", str(rc))
    # logger.warning("Neue MAC-Adresse gefunden: %s", mac)
    # logger.error("Failed writing to InfluxDb: %s", e)

    @staticmethod
    def get_logger(name: str, level=logging.DEBUG) -> logging.Logger:
        if not os.path.exists(LOG_DIR):
            os.makedirs(LOG_DIR)

        logger = logging.getLogger(name)
        if logger.hasHandlers():
            return logger  # vermeidet doppelte Handler

        logger.setLevel(level)

        formatter = logging.Formatter(
            "[%(asctime)s] %(levelname)s in %(name)s: %(message)s",
            datefmt="%Y-%m-%d %H:%M:%S",
        )

        file_handler = RotatingFileHandler(
            LOG_PATH, maxBytes=5_000_000, backupCount=5
        )
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)

        return logger
