【发布时间】:2019-12-02 15:16:41
【问题描述】:
我的程序中有两个记录器。一个是我在 gui 中制作的,一个超级复杂但设计得非常好,可以打印到控制台。我正在尝试从漂亮的控制台记录器获取输出到渲染的记录器。我已经在阳光下尝试了一切来让它工作,但我似乎无法弄清楚(由于我对其他记录器(spdlog)的代码缺乏理解。)我的结论是直接从打印的是最好的方法,但我在网上找不到任何人询问如何做到这一点。我已经看到了一些问题,但他们只是发布代码作为答案,并没有真正解释发生了什么。 我的问题:有没有办法从控制台获取打印出来的语句,以及这样做会带来哪些性能问题/并发症。
例如,如果我执行std::cout << "hello!" << std::endl; 或一些 printf 语句,我希望能够在代码中进一步向下抓取“hello!”
【问题讨论】:
-
为什么?您需要解决的实际问题是什么?为什么需要在程序后期“抓取”旧输出?
-
至于可能的解决方案(或者更确切地说是解决方法,因为您无法真正“获取”终端或控制台输出),只需在内部保存输出?
-
如果你有你正在记录的信息......也可以直接在你的 GUI 中显示它,而不是尝试做一些听起来离奇和令人费解的事情?
-
这个问题可能要简单得多:如何在 GUI 和控制台中显示使用 spdlog 编写的日志?
-
您可以创建自己的“tee”输出流,将输出写入某处,然后是
cout。在互联网上搜索“c++ cout tee”。