40 lines
1.2 KiB
Python

import json
import logging
import os
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
support_extra_properties=True,
)
return logger