Boost :: log在初始化后立即停止记录

时间:2014-01-20 02:42:17

标签: c++ logging boost scope

我有一个使用boost :: log version 2的小项目(来自Boost 1.55)。我想登录到一个文件,所以我这样初始化它:

void initializeLogging(boost::log::trivial::severity_level level)
{        
    logging::add_common_attributes();                                                              

    logging::add_file_log(
        keywords::file_name = "sample.%02N.log", 
        keywords::open_mode = std::ios::app,
        keywords::format = "[%TimeStamp%] %Message%"
    );

    logging::core::get()->set_filter
    (
        logging::trivial::severity >= level
    );

    boost::log::sources::severity_logger< boost::log::trivial::severity_level > lg;

    BOOST_LOG_SEV(lg, boost::log::trivial::error) << "INSIDE An error severity message";
}

我在文件sample.00.log中看到了行INSIDE An error severity message

但是当我打电话给doStuff之后,initializeLogging没有记录任何内容。

void doStuff()
{
    boost::log::sources::severity_logger< boost::log::trivial::severity_level > lg;

    BOOST_LOG_SEV(lg, boost::log::trivial::error) << "An error severity message";
}

此代码在Windows程序中,没有控制台可以查看。 Windows调试日志中没有任何内容。

如您所见,doStuff具有与第一个函数完全相同的代码。我需要做些什么来使我的日志记录设置成为永久性的吗?

1 个答案:

答案 0 :(得分:1)

boost::log::sources::severity_logger< boost::log::trivial::severity_level >是单身吗?

你为doStuff()创建了另一个局部变量lg,如果它不是单例,它就不会有初始化。

初始化:

logging::add_common_attributes();                                                              

logging::add_file_log(
    keywords::file_name = "sample.%02N.log", 
    keywords::open_mode = std::ios::app,
    keywords::format = "[%TimeStamp%] %Message%"
);

logging::core::get()->set_filter
(
    logging::trivial::severity >= level
);