IndustrialEnergyTracker/logger_setup.py
Igor Barcik 660ea7666f "Enhance PLC data monitoring and error handling"
Key changes include:

Improved error handling and logging in PLC data reading
Added detailed debug information with pprint
Restructured logging format for better readability
Removed redundant docstrings
Fixed PLC data reading logic with proper value extraction
Added support for extra properties in logger setup
Code cleanup and formatting improvements
2024-12-10 07:58:51 +01:00

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