Boost add_console_log对二进制表达式错误产生无效操作数

Boost add_console_log yields invalid operands to binary expression error

本文关键字:错误 无效 操作数 表达式 二进制 add console log Boost      更新时间:2023-10-16

我有以下简单的设置:

#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/utility/setup/console.hpp>
#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/expressions/keyword.hpp>

namespace mynamespace
{
    namespace keywords = boost::log::keywords;
    namespace expr = boost::log::expressions;
    enum SeverityLevel
    {
        Trace,
        Debug,
        Info,
        Warning,
        Error,
        Critical
    };

    class LoggingConfig
    {
    public:
        void init()
        {
            // Add default console logging sink
            auto format = expr::stream << expr::message;
            boost::log::add_console_log(std::cout, keywords::format=format);
        };
    };
}

编译得到:

/Users/iulian/ClionProjects/project/util/logging.hpp:33:40: error: invalid operands to binary expression ('const stream_type' (aka 'const actor<base_type>') and 'const message_type' (aka 'const attribute_keyword<tag::message>'))
            auto format = expr::stream << expr::message;
                          ~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~

我已经看到了许多配置格式的例子,等等,以类似的方式,我正在尝试上面。为什么这个不能编译?

这是非常愚蠢的-我错过了正确的包括…具体来说:

#include <boost/log/expressions.hpp>
#include <boost/log/sources/record_ostream.hpp>