This commit is contained in:
2026-01-06 18:22:57 +03:00
parent 6400c9a58f
commit 62a71d298e
3 changed files with 35 additions and 14 deletions

View File

@@ -130,6 +130,10 @@ class LoggingConfig(BaseModel):
default=5, default=5,
description="Количество резервных копий логов" description="Количество резервных копий логов"
) )
log_can_messages: bool = Field(
default=False,
description="Логировать каждое CAN сообщение на INFO уровне (может быть очень много логов)"
)
class GeneralConfig(BaseModel): class GeneralConfig(BaseModel):

View File

@@ -19,16 +19,18 @@ logger = get_logger(__name__)
class MessageProcessor: class MessageProcessor:
"""Класс для обработки и сохранения CAN сообщений с асинхронной обработкой.""" """Класс для обработки и сохранения CAN сообщений с асинхронной обработкой."""
def __init__(self, queue_size: int = 10000): def __init__(self, queue_size: int = 10000, log_messages: bool = False):
""" """
Инициализация процессора сообщений. Инициализация процессора сообщений.
Args: Args:
queue_size: Максимальный размер очереди сообщений queue_size: Максимальный размер очереди сообщений
log_messages: Логировать каждое сообщение на INFO уровне (по умолчанию False)
""" """
self.logger = logger self.logger = logger
self.storage = None self.storage = None
self.influxdb_client = None self.influxdb_client = None
self.log_messages = log_messages
# Очередь для асинхронной обработки сообщений # Очередь для асинхронной обработки сообщений
self.message_queue: Queue[Tuple[str, can.Message]] = Queue(maxsize=queue_size) self.message_queue: Queue[Tuple[str, can.Message]] = Queue(maxsize=queue_size)
@@ -202,8 +204,21 @@ class MessageProcessor:
message: CAN сообщение message: CAN сообщение
""" """
try: try:
# Логируем только на DEBUG уровне (не блокируем) # Логируем сообщение в зависимости от настроек
# DEBUG логирование может быть отключено в production if self.log_messages:
# Логирование на INFO уровне (если включено)
self.logger.info(
"CAN message",
extra={
"interface": interface,
"can_id": hex(message.arbitration_id),
"dlc": message.dlc,
"data": message.data.hex() if message.data else "",
"timestamp": message.timestamp
}
)
else:
# Логирование на DEBUG уровне (по умолчанию)
self.logger.debug( self.logger.debug(
"CAN message received", "CAN message received",
extra={ extra={

View File

@@ -178,7 +178,9 @@ class CANSniffer:
self.logger = get_logger(__name__) self.logger = get_logger(__name__)
# Инициализируем MessageProcessor для автоматической обработки сообщений # Инициализируем MessageProcessor для автоматической обработки сообщений
self.message_processor = MessageProcessor() # Используем настройку из конфигурации для логирования сообщений
log_messages = config.logging.log_can_messages
self.message_processor = MessageProcessor(log_messages=log_messages)
# Используем переданный callback или процессор по умолчанию # Используем переданный callback или процессор по умолчанию
if message_callback: if message_callback: