使用过滤器增强日志记录

boost logging with filters

本文关键字:日志 记录 增强 过滤器      更新时间:2023-10-16

我是boost日志的新手,并试图使带有过滤器的琐碎日志示例与boost日志1.1一起使用。代码如下:

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/filters.hpp>
void init()
{
    logging::core::get()->set_filter
    (
     filters::attr< logging::trivial::severity_level >("Severity") >= logging::trivial::info
     );
}
int main(int, char*[])
{
    BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
}

使用clang编译会导致以下错误消息:

/Users/admin/Documents/cmake tests/boost-log/main.cpp:7:5: error: use of undeclared identifier 'logging'
    logging::core::get()->set_filter
    ^
/Users/admin/Documents/cmake tests/boost-log/main.cpp:9:3: error: use of undeclared identifier 'filters'; did you mean 'boost::log_mt_posix::filters'?
         filters::attr< logging::trivial::severity_level >("Severity") >= logging::trivial::info
         ^~~~~~~
         boost::log_mt_posix::filters
/usr/local/include/boost/log/filters/has_attr.hpp:32:11: note: 'boost::log_mt_posix::filters' declared here
namespace filters {
          ^
/Users/admin/Documents/cmake tests/boost-log/main.cpp:9:18: error: use of undeclared identifier 'logging'
         filters::attr< logging::trivial::severity_level >("Severity") >= logging::trivial::info

这个例子看起来是基于一个旧版本的boost日志,有些名称已经更改。这个例子能很容易地修正吗?然而,似乎没有更新的教程。

文档中的示例似乎缺少includes后面的以下行:

namespace logging = boost::log;
namespace filters = boost::log::filters;