增强日志记录 - 记录多个文件

时间:2015-10-14 09:40:29

标签: c++ logging boost

我正在使用以下代码,但我看不到任何日志文件正在生成。你能告诉我为什么吗?此外,如果有人知道如何使用严重性记录器记录多个文件,请发布答案。是否也必须使用频道? 或者以下代码足以将日志存储在多个文件中?

src::severity_logger< severity_level > m_DbLogger;
BOOST_LOG_ATTRIBUTE_KEYWORD(tag_attr, "Tag", std::string)
logging::formatter fmt = expr::stream
<< std::setw(6) << std::setfill('0') << 1 << std::setfill(' ')
              << expr::if_(expr::has_attr(tag_attr))
              [
                  expr::stream << "[" << tag_attr << "] "
              ]
          << expr::smessage;
          // Initialize sinks
          typedef sinks::synchronous_sink< sinks::text_ostream_backend > text_sink;
          boost::shared_ptr< text_sink > sink = boost::make_shared< text_sink >();

          sink->locked_backend()->add_stream(
              //boost::make_shared< std::ofstream >(m_Settings.LogFileSQL + ".log"));
              boost::make_shared< std::ofstream >("1.log"));




          sink->set_formatter(fmt);
          sink->set_filter(!expr::has_attr(tag_attr));

          logging::core::get()->add_sink(sink);

          sink = boost::make_shared< text_sink >();

          sink->locked_backend()->add_stream(
              //boost::make_shared< std::ofstream >(m_Settings.LogFileSQL + "_diagnostics.log"));
              boost::make_shared< std::ofstream >("2.log"));

          sink->set_formatter(fmt);

          sink->set_filter((expr::has_attr(tag_attr) && tag_attr == "IMPORTANT_MESSAGE"));

          logging::core::get()->add_sink(sink);

          // Add attributes
          logging::add_common_attributes();

          BOOST_LOG_SEV(m_DbLogger, severity_level::info) << "A regular message";
          BOOST_LOG_SEV(m_DbLogger, severity_level::info) << "Something bad is going on but I can handle it";
          BOOST_LOG_SEV(m_DbLogger, severity_level::info) << "Everything crumbles, shoot me now!";

          {
              BOOST_LOG_SCOPED_THREAD_TAG("Tag", "IMPORTANT_MESSAGE");
              BOOST_LOG_SEV(m_DbLogger, severity_level::info) << "An important message";
          }

0 个答案:

没有答案