auto_cliper / core /logger.py
aliSaac510's picture
Update: Auto-thread support and Task Queue
342e0fb
import os
import logging
from datetime import datetime
class Logger:
_instance = None
@staticmethod
def get_logger(name="AppLogger"):
# Configure root logger once
if not getattr(Logger, "_is_configured", False):
Logger._setup_handlers()
Logger._is_configured = True
return logging.getLogger(name)
@staticmethod
def _setup_handlers():
# Get root logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)
# Clear existing handlers to avoid duplicates
if logger.handlers:
logger.handlers.clear()
# Console Handler
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.INFO)
c_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
c_handler.setFormatter(c_format)
logger.addHandler(c_handler)
# File Handler
try:
log_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs")
os.makedirs(log_dir, exist_ok=True)
f_handler = logging.FileHandler(os.path.join(log_dir, f"{datetime.now().strftime('%Y-%m-%d')}.log"), encoding='utf-8')
f_handler.setLevel(logging.INFO)
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
f_handler.setFormatter(f_format)
logger.addHandler(f_handler)
except Exception as e:
print(f"Failed to setup file logging: {e}")