1. 程式人生 > >boost log #3

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是顯然可以提供的功能。