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
或其他直接采用严重性级别的宏。这也意味着您必须自己创建和管理记录器。
我想切换不同的 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
或其他直接采用严重性级别的宏。这也意味着您必须自己创建和管理记录器。