39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
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
|
|
support_extra_properties=True,
|
|
)
|
|
|
|
return logger
|