Я смотрю на 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 кажется скудной. Заранее спасибо.
Вы просто ошиблись. Смотрите документы для:
-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
Других решений пока нет …