Как остановить запись w t C++ в стандартный вывод (консоль)

Wt - это фреймворк C++, который, как и многие другие, записывает результаты событий в консоль stdout. В то время как другая сторона приложения, которая используется, также записывает в нее, вся эта информация загромождена и трудна для чтения. Цель состоит в том, чтобы записать все от 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

3 ответа

Решение

Все, что выводится регистратором Wt, записывается в файл журнала, настроенный в вашей конфигурации. Самый короткий файл конфигурации, который перенаправляет запись в файл, будет следующим:

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

Есть одно исключение: Wt::Dbo часто входит в stderr. Мы (разработчики Wt) можем изменить это в будущем, чтобы сделать его немного более настраиваемым.

В вашем примере кода будет настроен только один конкретный экземпляр WLogger, и он не будет работать для регистрации самого Wt, который использует собственный регистратор. Вы можете получить доступ к этому экземпляру с WServer::logger(),

Там также журнал доступа. Вы можете настроить, куда это идет с --accesslog вариант.

Если я правильно понял, что вы спрашиваете: вам нужно создать объект типа потока, а затем использовать его следующим образом:

#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;
}

Это, конечно, самые простые вещи. Более подробную информацию можно найти здесь, например.

How to redirect stdout from wt to some file?

Может быть, трубы могут помочь вам

Другие вопросы по тегам