boost :: log(boost logging):BOOST_LOG_FUNCTION仅适用于主线程

时间:2013-11-10 18:08:56

标签: c++ multithreading boost boost-log boost-logging

考虑以下功能:

void thread() 
{ 
    BOOST_LOG_FUNCTION(); 

    while(true) {
        // Create log entry
    }
} 

如果我只是在“main”中调用“thread()”,我在“thread()”中创建的日志条目看起来像预期的那样:

 [void __cdecl thread(void) (c:\...\maintest.cpp:16)] 

但是如果在函数中使用“thread()”:

 boost::thread t(thread); 

相应的日志条目为空:

[] 

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我从boost日志作者那里得到了反馈。要使范围在登录过程中可用,您必须添加“范围”作为属性。它做到了这一点:

logging::core::get()->add_thread_attribute("Scope", attrs::named_scope());

但是,这仅与所示的当前线程有关。如果您使用多个线程,则必须致电:

logging::core::get()->add_global_attribute("Scope", attrs::named_scope());