【问题标题】:How to stop wt c++ writing to stdout (console)如何停止 wt c++ 写入标准输出(控制台)
【发布时间】:2018-03-09 20:33:35
【问题描述】:

Wt 是一个 C++ 框架,它和许多其他框架一样,将事件的结果写入标准输出(即控制台)。虽然应用程序的另一端正在使用,也写入它,但所有这些信息都混杂在一起,难以阅读。目的是将 Wt 中的所有内容写入日志文件。

从源代码中我发现了一些东西:

 Wt::WLogger logger; 
 logger.setFile("logging_file.txt");
 logger.configure("* -debug debug:wthttp");

但是,我仍然没有设法阻止它写入标准输出。需要什么。

 Wt::WLogger logger;
 logger.setFile("logging_file.txt");
 logger.configure("-no_std_out"); //this is a made up argument

【问题讨论】:

  • 你能说得更具体一点吗?
  • 要更具体地说明什么? Wt 将事件写入标准输出,即控制台,例如:127.0.0.1 - - blabla POST /?etcetc 是否可以将其重定向到文件而不是淹没标准输出。

标签: c++ stdout wt


【解决方案1】:

Wt 记录器输出的所有内容都会写入配置中配置的日志文件。将日志记录重定向到文件的最短配置文件如下:

<server>
    <application-settings location="*">
        <log-file>/path/to/logfile</log-file>
    </application-settings>
</server>

有一个例外:Wt::Dbo 经常记录到标准错误。我们(Wt 开发人员)将来可能会更改它以使其更具可配置性。

您的代码示例将只配置一个特定的 WLogger 实例,并且不适用于 Wt 本身的日志记录,它使用自己的记录器。您可以使用WServer::logger() 访问该实例。

还有访问日志。您可以使用 --accesslog 选项配置其所在位置。

【讨论】:

  • 谢谢,该日志文件运行良好。但是,是否也可以将 GET/POST 消息重定向到日志文件?例如:" 127.0.0.1 - - [2017-Sep-29 11:01:37.664611] "GET /?_=/test HTTP/1.1" 200 2901 "
  • 这就是我所说的--accesslog 选项。只需将该选项提供给所有其他选项(--docroot 等)旁边的 Wt 可执行文件。
【解决方案2】:

如果我正确理解了您的要求:您需要创建一个类型为 ofstream 的对象,然后按如下方式使用它:

#include <iostream>
#include <fstream> // needed for file operation
int main () {
std::ofstream file; 
file.open ("hello.txt");
// now do your calculation, other stuff...
// write to the file
file << "Text here\n";
file.close();
return 0;
}

当然,这是最基本的东西。更多细节可以在here找到,例如。

【讨论】:

    【解决方案3】:

    How to redirect stdout from wt to some file?

    也许pipes can help you

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      相关资源
      最近更新 更多