如何停止 wt c++ 写入标准输出(控制台)

How to stop wt c++ writing to stdout (console)

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

How to redirect stdout from wt to some file?

也许pipes can help you

如果我正确理解了你的问题:你需要创建一个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

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

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

有一个例外:Wt::Dbo 经常记录到 stderr。我们(Wt 开发人员)将来可能会对此进行更改,使其也更具可配置性。

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

访问该实例

还有访问日志。您可以使用 --accesslog 选项配置它的位置。