Boost add_console_log会导致二进制表达式错误的无效操作数

时间:2015-08-31 14:35:58

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

我有以下简单的设置:

#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;
                          ~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~

我已经看到了许多以与我上面尝试的方式类似的方式配置格式等的示例。为什么不编译?

1 个答案:

答案 0 :(得分:0)

这非常愚蠢 - 我错过了正确的包含..具体来说:

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