Spaces:
Sleeping
Sleeping
File size: 1,207 Bytes
38c1a14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import os
import logging
from typing import Any
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
def setup_logger() -> logging.Logger:
"""Configures structured logging to both standard output and log file."""
log_dir = os.path.join(PROJECT_ROOT, "logs")
os.makedirs(log_dir, exist_ok=True)
log_file = os.path.join(log_dir, "customer_analytics.log")
logger = logging.getLogger("customer_analytics")
logger.setLevel(logging.INFO)
# Avoid duplicate handlers if imported multiple times
if not logger.handlers:
formatter = logging.Formatter(
'[%(asctime)s] %(levelname)s [%(filename)s:%(lineno)d] %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# File Handler
file_handler = logging.FileHandler(log_file, encoding='utf-8')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# Console Handler
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
return logger
# Globally available logger instance
logger = setup_logger()
|