Boost Log:变量不是'boost :: log :: v2s_mt_posix :: trivial'的成员

时间:2017-07-04 14:23:21

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

我想使用单个变量切换不同的boost::log严重性级别,以控制大量BOOST_TRIVIAL_LOG(lvl)次来电。

// Class header
const boost::log::trivial::severity_level _LVL_DEBUG;

// Class ctor initialize list
#ifdef FOO_MACRO
        _LVL_DEBUG(boost::log::trivial::severity_level::info)
#else
        _LVL_DEBUG(boost::log::trivial::severity_level::debug)
#endif

// Class method
BOOST_LOG_TRIVIAL(_LVL_DEBUG) << "Foo bar";

但是当g ++编译我得到

  

错误:'_LVL_DEBUG'不是'boost :: log :: v2s_mt_posix :: trivial'的成员

我想知道我在哪里错过了这一点。

编辑1

boost::log::trivial::info(或其他级别的c)相同的输出

1 个答案:

答案 0 :(得分:1)

我们不清楚你要做什么。 BOOST_LOG_TRIVIAL(x)将严重性级别x扩展为boost::log::trivial::severity_level::x,其中severity_level为枚举,x应为该枚举的值。

如果要在编译时控制严重性级别,那么您所要做的就是像这样定义宏:

#ifdef FOO_MACRO
#define _LVL_DEBUG info
#else
#define _LVL_DEBUG debug
#endif

然后在日志记录语句中使用它:

BOOST_LOG_TRIVIAL(_LVL_DEBUG) << "Foo bar";

如果您想要运行时控制,那么您将无法再使用BOOST_LOG_TRIVIAL并且必须使用BOOST_LOG_SEV或其他直接采用严重性级别的宏。这也意味着您必须自己创建和管理记录器。