sd_journal_send для отправки двоичных данных. Как я могу получить данные, используя journalctl?

Я смотрю на systemd-journal как на метод сбора логов с внешних процессоров. Я очень заинтересован в его способности собирать двоичные данные при необходимости.

Я просто проверяю и исследую журнал прямо сейчас. Я хорошо знаю, что есть и другие, возможно, лучшие решения.

Я записываю двоичные данные так:

// strData is a string container containing binary data
strData += '\0';

sd_journal_send(
"MESSAGE=test_msg",
"MESSAGE_ID=12345",
"BINARY=%s", strData.c_str(),
NULL);

Строка журнала отображается при использовании journalctl инструмент. Я могу найти строку журнала, как это из терминала:

journalctl MESSAGE_ID=12345

Я могу получить двоичные данные всех журналов в журнале, например, из терминала:

journalctl --field=BINARY

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

Это не работает:

journalctl --field=BINARY MESSAGE_ID=12345

Я получаю там ошибку:

«Посторонние аргументы, начинающиеся с« MESSAGE_ID = 1234567890987654321 »

Какие-либо предложения? Документация по systemd-journal кажется скудной. Заранее спасибо.

0

Решение

Вы просто ошиблись. Смотрите документы для:

   -F, --field=
Print all possible data values the specified field can take in all entries of the journal.

против

   --output-fields=
A comma separated list of the fields which should be included in the output.

Вы также должны указать простой формат вывода (-o cat) чтобы получить сырой контент:

journalctl  --output-fields=BINARY  MESSAGE_ID=12345  -o cat
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]