我想使用单个变量切换不同的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'的成员
我想知道我在哪里错过了这一点。
与boost::log::trivial::info
(或其他级别的c)相同的输出
答案 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
或其他直接采用严重性级别的宏。这也意味着您必须自己创建和管理记录器。