"""Logging utility"""

import logging
import sys
from datetime import datetime

class TradingLogger:
    """Custom logger for trading operations"""
    
    _instances = {}
    
    def __new__(cls, client_code=None):
        if client_code not in cls._instances:
            cls._instances[client_code] = super().__new__(cls)
        return cls._instances[client_code]
    
    def __init__(self, client_code=None):
        if not hasattr(self, 'initialized'):
            self.client_code = client_code
            self.logger = logging.getLogger(f"trading_{client_code}" if client_code else "trading")
            self.logger.setLevel(logging.INFO)
            
            console_handler = logging.StreamHandler(sys.stdout)
            console_handler.setLevel(logging.INFO)
            
            formatter = logging.Formatter(
                f'[%(asctime)s] [%(levelname)s] {f"[{client_code}] " if client_code else ""}%(message)s',
                datefmt='%Y-%m-%d %H:%M:%S'
            )
            console_handler.setFormatter(formatter)
            
            file_handler = logging.FileHandler(f"/tmp/trading_{client_code}.log" if client_code else "/tmp/trading.log")
            file_handler.setLevel(logging.INFO)
            file_handler.setFormatter(formatter)
            
            self.logger.addHandler(console_handler)
            self.logger.addHandler(file_handler)
            self.initialized = True
    
    def info(self, message):
        self.logger.info(message)
    
    def error(self, message):
        self.logger.error(message)
    
    def warning(self, message):
        self.logger.warning(message)
    
    def debug(self, message):
        self.logger.debug(message)
    
    def success(self, message):
        self.logger.info(f"✓ {message}")
    
    def failure(self, message):
        self.logger.error(f"✗ {message}")