开发者

Boost log select destination file

Is it possible with one instance of Boost log, to log into severeal files.

I mean is it possible to specify in which file the log will be written:

BOOST_LOG_..(...) << "aaa" <- go to **A.log**
BOOST_LOG_..(...) << "bbb" <- go to **B.log**
开发者_如何学C


Yes, it's possible - using filters.

How you do it exactly depends on your preferences, but here's an example with scoped logger tags:

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");
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜