add log
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
@@ -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={
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user