mosquitto: содержимое сообщения журнала

Я использую mosquitto в качестве MQTT-брокера, и хотя он предлагает обширные функции ведения журнала, я не могу понять, как регистрировать сообщения фактической темы в файл (или даже в дерево файлов, упорядоченных по теме, или даже в БД) . Я вижу вариант log_desc topic, но либо он не делает того, что я ожидаю, либо не работает (вероятно, первое).

Я знаю, что могу просто подписаться на (или все) темы на том же компьютере из другого процесса и передать это в файл, и я знаю, что есть решение для записи данных, снова извлеченных клиентом, в БД с использованием python, но я хочу знать, может ли сам брокер записывать куда-то данные, которые он направляет, а не только метаданные.

В конце концов мне, вероятно, все равно придется записывать его в БД, но сейчас было бы неплохо записать данные в дерево файлов или даже просто в большой файл журнала. Брокерская служба может это сделать?


person John Alba    schedule 23.09.2019    source источник


Ответы (1)


Нет, брокер mosquitto не будет регистрировать все содержимое сообщения самостоятельно.

Самое близкое, что вы можете получить, это что-то вроде этого:

1569256583: Received PUBLISH from mosq/F7RrCcwvgdVzEVpHi3 (d0, q0, r0, m0, 'test', ... (3 bytes))

Это включает в себя тему и размер сообщения, но не само сообщение.

Важно помнить, что содержимое сообщения не обязательно должно быть текстом, это могут быть любые байты.

Флаг log_dest — это то место, куда записывается вывод журнала, вы устанавливаете уровень ведения журнала с помощью записи log_type.

person hardillb    schedule 23.09.2019
comment
Итак, лучшая практика здесь — подписаться на другой процесс и регистрировать эти данные? Потому что это кажется мне неоптимальным решением, поскольку трудно гарантировать, что подписанный процесс действительно получит все... - person John Alba; 24.09.2019
comment
С mosquitto ваш единственный вариант — это отдельный клиент, если он подписывается на QOS 2, вы можете быть уверены, что он получит все сообщения. Другие брокеры предлагают другие варианты, например. HiveMQ имеет прямое ведение журнала, или Mosca позволит вам написать свой собственный - person hardillb; 24.09.2019