我想使用一个变量来控制许多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) 最佳答案
目前尚不清楚您要做什么。 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
或直接采用严重性级别的其他宏。这也意味着您必须自己创建和管理记录器。