Boost.Log 无法设置日志记录筛选器(未声明的标识符"严重性")
Boost.Log unable to set logging filter (undeclared identifier 'severity')
我想让Boost.Log在我的项目中进行。这个问题来自于下面这行简单的示例:
using namespace boost::log;
core::get()->set_filter
(
trivial::severity >= trivial::info
);
在我的代码中,这翻译成如下:
boost::log::core::get()->set_filter(
boost::log::trivial::severity >= boost::log::trivial::info
);
但是,我得到以下错误:
error C2039: 'severity' : is not a member of 'boost::log::v2s_mt_nt5::trivial'
error C2065: 'severity' : undeclared identifier
我正在搜索周围的命名空间,试图找出我应该如何做到这一点,但我没有真正找到任何工作。这似乎需要一个疯狂的函数。我可以使用一些替代方法(定义一个填充过滤级别的函数?),但我不确定如何实现这一点。什么好主意吗?
我使用Boost. log版本2.0-r862,和Boost 1.53.0。
解决方案: Ryan指出我应该检查我的包括,果然我只包括trivial.hpp
,但core.hpp
和expressions.hpp
也需要作为包括。包括他们解决了这个问题。
// need at least these 3 to get "trivial" to work
#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/trivial.hpp>
查看trivial.hpp
,似乎severity
是keywords
名称空间的一部分。你试过boost::log::keywords::severity
吗?
下面是c++ 11中一个完整的工作示例,它总结了@aardvarkk解决方案:
#include <boost/log/expressions.hpp>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
namespace logging = boost::log;
auto init() -> void
{
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::warning
);
}
auto main(int argn, char *args[]) -> int
{
init();
BOOST_LOG_TRIVIAL(info) << "Testing the log system";
BOOST_LOG_TRIVIAL(error) << "Testing the log error";
return 0;
}
相关文章:
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 我的函数调用 (C++) 中的未声明标识符
- 具有继承的未声明标识符(运算符 ostream)
- 无法确定 IDE 在 C++ 中说出未声明标识符的原因
- 错误 C2065:'lO':用于声明向量值的未声明标识符?
- 可变参数模板的未声明标识符
- 动态变量上的c++MACRO未声明标识符
- 指向对象的指针的未声明标识符向量
- 简单C++程序上的多个未声明标识符
- C++类"未声明标识符"
- 计算文本文件中的整数数(使用 fin>>x 的未声明标识符)
- 编译器错误 xcode 未声明标识符 C++
- 直接 X 11 纹理 FX 文件错误 X3004 未声明标识符"input"
- GCC 未声明标识符"_asm"
- ios_base类的C++未声明标识符
- 未声明标识符SQL_SS_TABLE
- 使用arrayfire的未声明标识符
- 未声明标识符和标识符未定义是什么意思?如何修复错误
- 在 MacOS 上使用 OpenMPI C++语法时未声明标识符'MPI'