import logging import os import json import seqlog class CustomFormatter(logging.Formatter): def format(self, record): if hasattr(record, "extra"): extra_formatted = json.dumps(record.extra, indent=2) return f"{self.formatTime(record)} [{record.levelname}] {record.getMessage()}\nExtra Data: {extra_formatted}" return f"{self.formatTime(record)} [{record.levelname}] {record.getMessage()}" def setup_logger(): logger = logging.getLogger("IndustrialEnergyTracker") logger.setLevel(logging.DEBUG) # Console handler with custom formatting console_handler = logging.StreamHandler() console_handler.setFormatter(CustomFormatter()) logger.addHandler(console_handler) # SEQ logging if configured with optimized batch settings seq_url = os.getenv("SEQ_URL") seq_api_key = os.getenv("SEQ_API_KEY") if seq_url and seq_api_key: seqlog.log_to_seq( server_url=seq_url, api_key=seq_api_key, level=logging.DEBUG, batch_size=50, # Increased batch size auto_flush_timeout=10, # Increased flush timeout to 10 seconds ) return logger