# =============================================================================
# IMPROVED LogUtils.py - Replace your existing file with this
# =============================================================================

import logging
import logging.handlers
import os
import sys
from datetime import datetime

def getRootLogger():
    """
    Creates and returns a configured root logger.
    This version doesn't require a logging.conf file.
    """
    
    # Create log directory if it doesn't exist
    log_dir = os.path.join(os.path.dirname(__file__), 'log')
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
        print(f"Created log directory: {log_dir}")
    
    # Create logger
    logger = logging.getLogger('PPP_Automation')
    logger.setLevel(logging.INFO)
    
    # Clear existing handlers to avoid duplicates
    if logger.hasHandlers():
        logger.handlers.clear()
    
    # Create formatters
    detailed_formatter = logging.Formatter(
        fmt='%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    
    # File handler - rotating by day, keep 30 days
    log_filename = os.path.join(log_dir, f'PPP_Automation-log.{datetime.now().strftime("%Y-%m-%d")}')
    try:
        file_handler = logging.handlers.TimedRotatingFileHandler(
            filename=log_filename,
            when='midnight',
            interval=1,
            backupCount=30,
            encoding='utf-8'
        )
        file_handler.setLevel(logging.INFO)
        file_handler.setFormatter(detailed_formatter)
        logger.addHandler(file_handler)
        print(f"File handler added: {log_filename}")
    except Exception as e:
        print(f"Failed to create file handler: {e}")
    
    # Console handler
    try:
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.setLevel(logging.INFO)
        console_handler.setFormatter(detailed_formatter)
        logger.addHandler(console_handler)
        print("Console handler added")
    except Exception as e:
        print(f"Failed to create console handler: {e}")
    
    # Prevent propagation to root logger
    logger.propagate = False
    
    return logger
