我试图将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();
}
答案 0 :(得分:1)
我的猜测是你遇到了编译错误。与来自Boost.Parameter的format
声明的任何其他关键字一样,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)。