From 62a71d298e87d7eb888f702d02a39024805a16c7 Mon Sep 17 00:00:00 2001 From: qsethuk Date: Tue, 6 Jan 2026 18:22:57 +0300 Subject: [PATCH] add log --- can_sniffer/src/config.py | 4 ++ .../src/socket_can/message_processor.py | 41 +++++++++++++------ can_sniffer/src/socket_can/src.py | 4 +- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/can_sniffer/src/config.py b/can_sniffer/src/config.py index 6cb951c..fc8e474 100644 --- a/can_sniffer/src/config.py +++ b/can_sniffer/src/config.py @@ -130,6 +130,10 @@ class LoggingConfig(BaseModel): default=5, description="Количество резервных копий логов" ) + log_can_messages: bool = Field( + default=False, + description="Логировать каждое CAN сообщение на INFO уровне (может быть очень много логов)" + ) class GeneralConfig(BaseModel): diff --git a/can_sniffer/src/socket_can/message_processor.py b/can_sniffer/src/socket_can/message_processor.py index b50af9b..5a6262d 100644 --- a/can_sniffer/src/socket_can/message_processor.py +++ b/can_sniffer/src/socket_can/message_processor.py @@ -19,16 +19,18 @@ logger = get_logger(__name__) class MessageProcessor: """Класс для обработки и сохранения CAN сообщений с асинхронной обработкой.""" - def __init__(self, queue_size: int = 10000): + def __init__(self, queue_size: int = 10000, log_messages: bool = False): """ Инициализация процессора сообщений. Args: queue_size: Максимальный размер очереди сообщений + log_messages: Логировать каждое сообщение на INFO уровне (по умолчанию False) """ self.logger = logger self.storage = None self.influxdb_client = None + self.log_messages = log_messages # Очередь для асинхронной обработки сообщений self.message_queue: Queue[Tuple[str, can.Message]] = Queue(maxsize=queue_size) @@ -202,18 +204,31 @@ class MessageProcessor: message: CAN сообщение """ try: - # Логируем только на DEBUG уровне (не блокируем) - # DEBUG логирование может быть отключено в production - self.logger.debug( - "CAN message received", - extra={ - "interface": interface, - "can_id": hex(message.arbitration_id), - "dlc": message.dlc, - "data": message.data.hex() if message.data else "", - "timestamp": message.timestamp - } - ) + # Логируем сообщение в зависимости от настроек + 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( + "CAN message received", + extra={ + "interface": interface, + "can_id": hex(message.arbitration_id), + "dlc": message.dlc, + "data": message.data.hex() if message.data else "", + "timestamp": message.timestamp + } + ) # Сохраняем в локальное хранилище (SQLite) self._save_to_storage(interface, message) diff --git a/can_sniffer/src/socket_can/src.py b/can_sniffer/src/socket_can/src.py index 6e0d7ed..78dcc52 100644 --- a/can_sniffer/src/socket_can/src.py +++ b/can_sniffer/src/socket_can/src.py @@ -178,7 +178,9 @@ class CANSniffer: self.logger = get_logger(__name__) # Инициализируем MessageProcessor для автоматической обработки сообщений - self.message_processor = MessageProcessor() + # Используем настройку из конфигурации для логирования сообщений + log_messages = config.logging.log_can_messages + self.message_processor = MessageProcessor(log_messages=log_messages) # Используем переданный callback или процессор по умолчанию if message_callback: