无法在Boost.Log中设置控制台日志的格式

时间:2016-03-27 15:58:12

标签: c++ c++11 boost-log

我试图将boost.log设置为我拥有的项目。我已经按照示例进行了操作,但是当我尝试设置格式时,编译器说该格式是只读参考。

void init() {
    logging::add_console_log(
        std::cout,

        // Compiler says "const boost::parameter::keyword<keywords::tag::format>& is read-only reference".
        keywords::format = "%Timestamp% %Message%",

        keywords::severity = info
    );

    logging::add_common_attributes();
}

1 个答案:

答案 0 :(得分:1)

我的猜测是你遇到了编译错误。与来自Boost.Parameterformat声明的任何其他关键字一样,BOOST_PARAMETER_KEYWORD关键字确实是一个常量引用。但是,boost::parameter::keyword中有一个const限定的赋值运算符,应该由编译器选择。

作为一种解决方法,您可以尝试使用get静态函数调用替换关键字,如下所示:

// Replace this:
keywords::format = "%Timestamp% %Message%"

// with this:
boost::parameter::keyword<keywords::tag::format>::get() = "%Timestamp% %Message%"

另外,请注意属性名称区分大小写,add_common_attributes函数添加“TimeStamp”属性,而不是“Timestamp”(注意大写S)。