从c++代码中读取journalctl的调试输出



enter code here我有一个在嵌入式Linux设备上运行的c++应用程序,它使用systemd.

如果我希望流化我的服务/进程的调试输出,我SSH到设备并从终端执行命令journalctl -u <my_systemd_service>.service -f,其中<my_systemd_service>是我的实际服务名称。

现在的问题是,在生产过程中,出于安全原因,我希望禁用SSH。但是,我仍然希望有时能够检索调试输出,当设备连接到MQTT代理时,通过向设备发送MQTT命令来触发调试输出。

当接收到MQTT命令时,是否有一种方法可以从c++代码本身中获得我的调试输出?

我不认为使用system()将是理想的。例如system("journalctl -u <my_systemd_service>.service -f")?当然,如果是这样的话,这也需要在单独的线程中运行。如有任何建议,不胜感激。

您可以将服务stdout/stderr直接指向一个文件,然后在需要时使用std::fstream读取它。您可能希望看到以下内容:https://stackoverflow.com/a/43830129/11277878

最新更新