Мне известно о регистраторе в Visual Studio, т.е.
Logger::WriteMessage("foo");
Это прекрасно работает для тестового кода, менее практично для кода внутри приложения. Итак, я ищу стандартное решение для перенаправления сообщений stdout внутри кода.
Поток в std-out можно переназначить, например:
// REDIRECT STD STREAM
streambuf * backup;
backup = cout.rdbuf();
stringstream ss;
cout.rdbuf(ss.rdbuf());
// DO SOMETHING
cout << "foo\n";
// PRINT STREAM TO LOGGER
Logger::WriteMessage(ss.str().c_str());
// ASSIGN COUT BACK TO STDOUT
cout.rdbuf(backup);
Других решений пока нет …