现在,我要将日志写到本地文件中。我的例子代码比官方文档简单点。
#include <iostream> #include <boost/log/core.hpp> #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 SetFilter1() { logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info); } void SetFilter2() { logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::debug); } int main () { cout << "hello, world" << endl; logging::add_file_log("sample.log"); SetFilter1(); 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"; BOOST_LOG_TRIVIAL(info) << "--------------------" << endl; SetFilter2(); 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"; }
<boost/log/utility/setup/file.hpp>
no member named 'add_file_log' in namespace 'boost::log'
$ cat sample.log An informational severity message A warning severity message An error severity message A fatal severity message -------------------- A debug severity message An informational severity message A warning severity message An error severity message A fatal severity messag
logging::add_file_log("sample.log");
左边是 log source, 负责从程序中收集日志信息,就像这样的语句:
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";右边是sink, 负责处理日志信息,决定日志输出到哪里,怎么使用。
中间的logging core将它们连接在一起。