2025-01-28 10:19:44 -08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
2025-08-15 09:36:37 -07:00
|
|
|
import os
|
2025-01-28 10:19:44 -08:00
|
|
|
import logging
|
|
|
|
|
|
|
|
# Create logs directory if it doesn't exist
|
|
|
|
if not os.path.exists('logs'):
|
|
|
|
os.makedirs('logs')
|
|
|
|
|
|
|
|
# Logging configuration
|
|
|
|
LOG_DIR = 'logs'
|
|
|
|
LOG_FILE = os.path.join(LOG_DIR, 'deck_builder.log')
|
|
|
|
LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
|
|
|
LOG_LEVEL = logging.INFO
|
|
|
|
|
|
|
|
# Create formatters and handlers
|
|
|
|
# Create a formatter that removes double underscores
|
|
|
|
class NoDunderFormatter(logging.Formatter):
|
|
|
|
def format(self, record):
|
|
|
|
record.name = record.name.replace("__", "")
|
|
|
|
return super().format(record)
|
|
|
|
|
|
|
|
# File handler
|
|
|
|
file_handler = logging.FileHandler(LOG_FILE, mode='w', encoding='utf-8')
|
|
|
|
file_handler.setFormatter(NoDunderFormatter(LOG_FORMAT))
|
|
|
|
|
|
|
|
# Stream handler
|
|
|
|
stream_handler = logging.StreamHandler()
|
2025-08-15 09:36:37 -07:00
|
|
|
stream_handler.setFormatter(NoDunderFormatter(LOG_FORMAT))
|
|
|
|
|
|
|
|
# Root logger assembly helper (idempotent)
|
|
|
|
def get_logger(name: str = 'deck_builder') -> logging.Logger:
|
|
|
|
logger = logging.getLogger(name)
|
|
|
|
if not logger.handlers:
|
|
|
|
logger.setLevel(LOG_LEVEL)
|
|
|
|
logger.addHandler(file_handler)
|
|
|
|
logger.addHandler(stream_handler)
|
|
|
|
return logger
|