import logging
from logging.handlers import RotatingFileHandler
import os

# Define log directory and log file
LOG_DIR = "logs"
LOG_FILE = "app.log"

# Ensure the log directory exists
os.makedirs(LOG_DIR, exist_ok=True)

# Define the log formatter
formatter = logging.Formatter("[%(asctime)s] %(levelname)s in %(module)s: %(message)s")

# Set up console handler
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)

# Set up file handler with rotation
file_handler = RotatingFileHandler(
    os.path.join(LOG_DIR, LOG_FILE), maxBytes=10485760, backupCount=5
)
file_handler.setFormatter(formatter)

# Set up the root logger
logging.basicConfig(level=logging.INFO, handlers=[console_handler, file_handler])

# Example of setting up a named logger
logger = logging.getLogger(__name__)


def setup_logging():
    """
    Function to set up logging configuration.
    This can be called at the start of the application.
    """
    logging.getLogger().addHandler(console_handler)
    logging.getLogger().addHandler(file_handler)
    logger.info("Logging is set up.")


# Call setup_logging when this module is imported
setup_logging()
