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

1 ответ

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

   -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
Другие вопросы по тегам