# app/core/logger.py
import os
import logging
from logging.handlers import TimedRotatingFileHandler
from datetime import datetime

# Define the log directory path
LOG_DIR = "logs"
if not os.path.exists(LOG_DIR):
    os.makedirs(LOG_DIR)

# Get the current date for the log file name
current_date = datetime.now().strftime("%Y-%m-%d")
log_file_path = os.path.join(LOG_DIR, f"logs_{current_date}.log")

# Create a logger instance
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Define the log formatter
formatter = logging.Formatter(
    "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S"
)

# Create a TimedRotatingFileHandler
# 'midnight' means a new file is created at the start of each day.
# backupCount=0 means we don't need it to keep any backups, as the cleanup script will handle it.
# NOTE: The TimedRotatingFileHandler manages creating new files, but not deleting old ones.
file_handler = TimedRotatingFileHandler(
    log_file_path,
    when="midnight",
    interval=1,
    backupCount=0,
    encoding="utf-8"
)
file_handler.setFormatter(formatter)

# Add the handler to the logger
logger.addHandler(file_handler)

# Optional: Add a StreamHandler to print logs to the console
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)

# To use the logger in other modules, you can import and use it like this:
# from app.core.logger import logger
# logger.info("This is an info message.")

#0 2 * * * /usr/bin/python3 /path/to/your/project/scripts/clean_logs.py