Boost 日志:变量不是“boost::log::v2s_mt_posix::trivial”的成员

Boost Log: variable is not a member of ‘boost::log::v2s_mt_posix::trivial’

我想切换不同的 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++编译时得到

error: ‘_LVL_DEBUG’ is not a member of ‘boost::log::v2s_mt_posix::trivial’

我想知道我哪里漏掉了重点。

编辑 1

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

不清楚您要做什么。 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 或其他直接采用严重性级别的宏。这也意味着您必须自己创建和管理记录器。