C++ sd_日志_发送以发送二进制数据。如何使用journalctl检索数据?

C++ sd_日志_发送以发送二进制数据。如何使用journalctl检索数据?,c++,linux,binary,systemd,systemd-journald,C++,Linux,Binary,Systemd,Systemd Journald,我将systemd journal视为从外部处理器收集日志的一种方法。我对它在必要时收集二进制数据的能力非常感兴趣 我现在只是在测试和调查这本杂志。我很清楚还有其他可能更好的解决方案 我正在记录二进制数据,如下所示: // strData is a string container containing binary data strData += '\0'; sd_journal_send( "MESSAGE=test_msg", "MESSAGE_ID=12345",

我将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消息\u ID=12345

我可以从终端获取日志中所有日志的二进制数据,如下所示:

journalctl--field=BINARY

我需要把二进制数据放到一个文件中,这样我就可以从程序中访问并解码它。我该怎么做

这不起作用:

journalctl--field=BINARY MESSAGE\u ID=12345

我有一个错误:

“以'MESSAGE_ID=123456789987654321'开头的无关参数”


有什么建议吗?systemd日志上的文档似乎不多。提前谢谢。

你选错了。有关以下内容,请参阅文档:

vs

您还必须指定普通输出格式(
-o cat
)以获取原始内容:

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

我正在运行16.04.4 Ubuntu,看起来我已经安装了Systemd229。229似乎不支持--output字段。我现在想知道如何升级。
   --output-fields=
       A comma separated list of the fields which should be included in the output. 
journalctl  --output-fields=BINARY  MESSAGE_ID=12345  -o cat