首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost日志回调

Boost日志回调
EN

Stack Overflow用户
提问于 2013-07-05 14:45:53
回答 1查看 1.6K关注 0票数 1

我创建了一个基于升压测井的记录器机制。

我的代码基于简单的记录器,如这个示例所示。

我想知道如何自动调用系统出口

代码语言:javascript
复制
exit(1)

(或任何其他自定义回调函数)每当发生致命错误时。

欢迎任何帮助!

更新:

解决方案是通过重载扩展后端接收器方法来实现consume()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-06 06:27:00

检查普通记录器严重性级别的接收器示例:

代码语言:javascript
复制
#include <boost/log/trivial.hpp>
#include <boost/log/sinks/basic_sink_backend.hpp>
#include <boost/log/attributes/value_extraction.hpp>
#include <boost/log/sinks/async_frontend.hpp>
namespace sinks = boost::log::sinks;

void initBoostLog() {
  struct Sink: public sinks::basic_formatted_sink_backend<char, sinks::concurrent_feeding> {
    void consume (const boost::log::record_view& rec, const string& str) {
      using boost::log::trivial::severity_level;
      auto severity = rec.attribute_values()[boost::log::aux::default_attribute_names::severity()].extract<severity_level>();
      if (!severity || severity.get() <= severity_level::info) {
        std::cout << str << std::endl;
      } else {
        std::cerr << str << std::endl;
      }
    }
  };

  typedef sinks::asynchronous_sink<Sink> sink_t; boost::shared_ptr<sink_t> sink (new sink_t());
  boost::shared_ptr<boost::log::core> logc = boost::log::core::get();
  logc->add_sink (sink);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17491561

复制
相关文章

相似问题

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