首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将cerr和clog都重新定义到共享日志文件中?

如何将cerr和clog都重新定义到共享日志文件中?
EN

Stack Overflow用户
提问于 2010-12-26 00:16:27
回答 1查看 1.8K关注 0票数 0

这里的一个相关问题展示了如何使用clog来做到这一点:

How to redefine clog to tee to original clog and a log file?

现在的问题是如何同时为cerr做这件事。对于上面的问题,到cerr的输出不会在日志文件中结束,因为日志文件也需要它。

我们的目标是,无论是发送到clog还是cerr的任何内容都会在日志文件中保存一次,因此需要将clog和cerr都绑定到一个共享日志文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-26 07:02:56

此代码将把std::cout和std::cerr重定向到输出文件:

代码语言:javascript
复制
// create an output stream
std::ofstream trace_log ( "/tmp/foo.log" );

// connect stream buffers
std::streambuf *coutbuf = std::cout.rdbuf();
std::cout.rdbuf(trace_log.rdbuf () );

std::streambuf *cerrbuf = std::cerr.rdbuf();
std::cerr.rdbuf(trace_log.rdbuf () );

// log 
std::cout << "cout here" << std::endl;
std::cerr << "cerr here" << std::endl;

// restore
std::cout.flush ();
std::cout.rdbuf(cerrbuf);

std::cerr.flush ();
std::cerr.rdbuf(cerrbuf);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4530751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档