2011-05-11 54 views
3

是否可以使用Boost日誌的一個實例登錄到嚴重文件。Boost日誌選擇目標文件

我的意思是它可以指定在哪個文件日誌將被寫入:

BOOST_LOG_..(...) << "aaa" <- go to **A.log** 
BOOST_LOG_..(...) << "bbb" <- go to **B.log** 

回答

1

是的,這是可能的 - 使用filters

你怎麼做到這一點正是取決於你的喜好,但這裏的作用域與標籤記錄的例子:

void SomeFunction() 
{ 
    { 
     // everything in this scope gets logged to A.log 
     BOOST_LOG_SCOPED_LOGGER_TAG(lg, "Log", std::string, "LogA") 
     BOOST_LOG(lg) << "aaa"; 
     BOOST_LOG(lg) << "aaa2"; 
    } 

    { 
     // everything in this scope gets logged to B.log 
     BOOST_LOG_SCOPED_LOGGER_TAG(lg, "Log", std::string, "LogB") 
     BOOST_LOG(lg) << "bbb"; 
     BOOST_LOG(lg) << "bbb2"; 
    } 
} 

// This is your log initialization routine 
void InitLogs() 
{ 

    // Initialize sinkA to use a file backend that writes to A.log and sinkB to B.log. 
    // ... 
    // ... 

    // Make sink A only accept records with the Log attribute "LogA" 
    // while sink B will only accept records where it is "LogB". 
    sinkA.set_filter(flt::attr<std::string>("Log") == "LogA"); 
    sinkB.set_filter(flt::attr<std::string>("Log") == "LogB"); 
}