Я использую регистратор Google (GLog) в C++ проект, где исходный код содержит распечатку информационных элементов и прогресса:Как я могу отправить как Google Logger, так и cout?
std::cout << some_useful_stuff << "\n";
И я могу использовать GLog войти информационные элементы:
LOG(INFO) << some_useful_stuff << "\n"; \\ gets echoed to stdout
Я не могу изменить все операторы std::cout
всюду по кодовой базе (поскольку я использую некоторые подпоры от третьих лиц и т. Д., И не смог добавить свои собственные заявления о регистрации для них), это мешает мне использовать if-else конструкции (которая была бы уродливой в любом случае, wra pping каждый оператор вывода в логике).
Итак, как я мог реплицировать stdout
выходы на GLog?
std::cout << some_useful_stuff << "\n"; \\ message also goes to LOG(INFO)
Возможно полезно: мне действительно не нужно, чтобы это происходило одновременно; полезно иметь такой выбор, как {CONSOLE, LOGS, BOTH}, но я мог бы согласиться с более простым выбором между {CONSOLE, LOGS}.
Также - опытный программист, но новичок C++, так что если это мега простой; извинения - и спасибо заранее!
Спасибо за редактирование @Borgleader ... избили меня до этого изменения;) – thclark
[boost: : iostreams :: tee_device] (http://www.boost.org/doc/libs/1_60_0/libs/iostreams/doc/functions/tee.html) полезны для одновременной записи в два потока. В основном обертка для двух потоков. – AndyG