import os
import logging
from logging.handlers import RotatingFileHandler
from datetime import datetime
import pytz

LOG_DIR = "/applogs"
os.makedirs(LOG_DIR, exist_ok=True)
LOG_FILE = os.path.join(LOG_DIR, "app.logs")

MINSK_TZ = pytz.timezone("Europe/Minsk")

class MinskFormatter(logging.Formatter):
    def formatTime(self, record, datefmt=None):
        dt = datetime.fromtimestamp(record.created, MINSK_TZ)
        if datefmt:
            return dt.strftime(datefmt)
        else:
            return dt.strftime("%Y-%m-%d %H:%M:%S")

def get_logger():
    logger = logging.getLogger("app_logger")
    logger.setLevel(logging.INFO)
    logger.propagate = False

    if not logger.handlers:
        formatter = MinskFormatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

        file_handler = RotatingFileHandler(
            LOG_FILE,
            maxBytes=50*1024*1024,
            backupCount=3,
            encoding="utf-8"
        )
        file_handler.setFormatter(formatter)

        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)

        logger.addHandler(file_handler)
        logger.addHandler(console_handler)

        for noisy_lib in ("httpx", "httpcore", "telegram", "apscheduler"):
            logging.getLogger(noisy_lib).setLevel(logging.WARNING)

        logger.info(f"Logger initialized: writing to {LOG_FILE} and console")

    return logger

logger = get_logger()
