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

Cannot set format of console log in Boost.Log

本文关键字:控制台 日志 格式 设置 Boost log      更新时间:2023-10-16

我正在尝试将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();
}

我的猜测是您遇到了一个编译器错误。format关键字和Boost.Parameter中用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)。