- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有人有一个例子来说明如何重新定义 C++ 内置的 clog,而不是有一个新的关联 rdbuf(),它被处理为原始 clog.rdbuf() 和 ofstream 对象的 rdbuf() 的三通到磁盘上的日志文件。
目的是让代码在整个过程中使用 std::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 习惯用法来管理缓冲区切换,您可以使整个事情变得更加健壮。
关于c++ - 如何将 clog 的 rdbuf() 重新定义为 clog 和日志文件的原始 rdbuf() 的三通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/942399/
有没有人有一个例子来说明如何重新定义 C++ 内置的 clog,而不是有一个新的关联 rdbuf(),它被处理为原始 clog.rdbuf() 和 ofstream 对象的 rdbuf() 的三通到磁
最近我开始尝试大量抓取一个网站以用于存档目的,我认为让多个 Web 请求异步工作以加快处理速度是个好主意(10,000,000 个页面肯定需要大量存档)等等我冒险进入并行性的严酷女主人,三分钟后我开始
我正在做什么:我正在浏览数据库中的公司表...每个公司都有一个文本description字段,并且在该字段内可以有许多超链接(很少超过 4 个)。我想做的是使用 curl 测试这些链接的“不良”响应(
我已经安装了主-主复制。 一切正常,直到您断开两个服务器之间的链接。 一旦被破坏,如果超过某种限制,数据将不会从一个数据转移到另一个数据。 Max_packet 大小设置为 500mb。 但是,如果您
我要编译CLOGS library.I follow this手动的。我在 windows 10 x64 中使用 Visual Studio 2010,python 3.4。我对waf构建系统一无所知
我需要一个类来包装对 std::clog 的调用这样: 每条消息都带有标题前缀,其中包括时间和生成消息的实体的名称。 消息根据错误类型(例如调试、警告、错误)进行着色。 使用方式完全等同于std::c
两个排序的整数数组 A[1..N] 和 B[1..N] 按升序提供。 问题:设计一个O(log N)-time 算法来找出所有 2N 个整数的中位数。 N 可能不是 2 的幂。 为了简单起见,我们可以
在开发代码时,我有很多控制台日志记录 (std::clog) 和一些控制台输出 (std::cout)。但是现在,我想在线提交我的源代码,我想禁用所有控制台日志记录 (clog) 但保留控制台输出 (
这个问题在这里已经有了答案: What is the point of clog? (6 个答案) 关闭 7 年前。 我的代码中有一个基本的调试消息,它打印一条关于调用什么函数的消息。 #ifdef
以下程序在使用 g++ 退出后出现段错误: #include #include
这里的一个相关问题展示了如何只用木屐来做到这一点: How to redefine clog to tee to original clog and a log file? 现在的问题是如何同时为 c
我想创建一个类似流的类,通过它我可以写入 std::out 和 std::clog。 我有以下代码,但问题是它只写入 std::clog,而控制台上的输出并不像预期的那样(奇怪的是,它覆盖了自己)。
我知道目前的C++中没有线程的概念,但是this article is saying : A typesafe, threadsafe, portable logging mechanism ....
iostream 对象 cin、cout、cerr 和 clog 是在 iostream header 中声明的对象。 我知道在某些编译器中可能会在构造这些 iostream 对象之前尝试使用它们,因
cout、cin、cerr 和 clog 名称中的“c”是什么意思? 我会说 char 但我没有找到任何可以确认的东西。 最佳答案 The "c" stands for "character" bec
我在 Unix 上开发一个向 syslog 发送消息的 C++ 程序。 当前代码使用类似于 printf 的 syslog 系统调用。 现在我更愿意为此目的使用流,通常是内置的 std::clog。但
我在 ng-model 文档中摆弄 Angular 自己的站点使用的 plunker: http://plnkr.co/edit/?p=preview 如果将 $scope.val 设置为其中包含“”
log() = log base 2 of ()log()^2 = log^2 base 2 of ()我被这个归纳证明困住了。我有以下递归关系T(n) = T(n/2) + Theta(log(n)
我是一名优秀的程序员,十分优秀!