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

Я смотрю на 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 кажется скудной. Заранее спасибо.

1 Ответ

0 голосов
/ 05 июля 2018

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

   -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
...