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
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
|