boost log #3

现在,随着程序增大,我们不愿意再一个个看输出,我们将日志输出到文件。一旦执行了这个功能,控制台输出将被覆盖掉。

#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/utility/setup/file.hpp>
namespace logging = boost::log;
using namespace std;
void SetFilter() {
  logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info);
}int main () {
  cout << "hello, world" << endl;
  logging::add_file_log("sample.log");
  SetFilter();
  BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
  BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
  BOOST_LOG_TRIVIAL(info) << "An informational severity message";
  BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
  BOOST_LOG_TRIVIAL(error) << "An error severity message";
  BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
}

这是日志库常用的概念。

左边是source,负责收集数据。比如LOG_DEBUG<<"...."

中间是core,负责链接source和sink

sink负责处理数据,也就是如何把数据写到目的地appender

最后面应该是appender的概念,比如向网络输出什么的,boost log似乎没有提供这样的功能,向网络输出感觉似乎有点多余,因为并不可靠。

代表console的sink在我们执行logging::add_file_log("sample.log")之后,被文件sink取代,所以控制台不输出。

这意味着,往core里添加多个sinks是显然可以提供的功能。

猜你喜欢

转载自www.cnblogs.com/lsaejn/p/10041909.html