如何将clog的rdbuf()重新定义为clog的原始rdbuf()和日志文件的tee?

有没有人有一个例子,说明如何重新定义内置clog的C ++而不是有一个新的关联rdbuf(),它被处理成原始clog.rdbuf()的一个tee和一个ofstream对象的rdbuf()到一个日志磁盘上的文件。 目的是让代码始终使用std :: clog,但要将其转到默认的clog目标以及磁盘上的日志文件。 谢谢。 -威廉     
已邀请:
您将不得不编写自定义streambuf派生类。是否将数据吐出到你的ofstream的rdbuf和你原来的clog rdbuf中。 编写自定义streambuf的一般示例: http://www.dreamincode.net/code/snippet2499.htm 存储新的流缓冲区可以按如下方式完成:
// grab buffer for clog
std::streambuf* oldClogBuf = std::clog.rdbuf();

// create custom buffer which feeds both clog and an ofstream
CustomBuffer* customBuf = new CustomBuffer( oldClogBuf );

// stash custom buffer
std::clog.rdbuf( customBuf );

...do stuff...

// restore original clog buffer
std::clog.rdbuf( oldClogBuf );
通过使用RAII惯用法来管理缓冲区切换,您可以使整个事物更加健壮。     

要回复问题请先登录注册