n. *_* m. 10 c++ boost boost-log c++11
我有一些琐碎的日志记录:
BOOST_LOG_TRIVIAL(trace) << make_trace_record();
Run Code Online (Sandbox Code Playgroud)
现在make_trace_record
是一个有点贵的功能(不要问为什么,这很复杂).我只想在日志当前通过过滤时调用它.我怎样才能做到这一点?我没有看到明确调用严重性过滤器的方法.
Boost.Log预先过滤;因此,make_trace_record()
如果严重性不够高,则不会被调用。
为了设置普通记录器的严重性过滤器,请调用:
boost::log::core::get()->set_filter(
boost::log::trivial::severity >= boost::log::trivial::...
);
Run Code Online (Sandbox Code Playgroud)
例如,以下示例输出1
,表明expensive()
仅调用一次:
#include <iostream>
#include <boost/log/expressions.hpp>
#include <boost/log/trivial.hpp>
int count = 0;
int expensive()
{
return ++count;
}
int main()
{
boost::log::core::get()->set_filter(
boost::log::trivial::severity >= boost::log::trivial::warning
);
BOOST_LOG_TRIVIAL(error) << expensive();
BOOST_LOG_TRIVIAL(info) << expensive();
std::cout << count << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
印刷:
[2018-05-21 14:33:47.327507] [0x00007eff37aa1740] [error] 1
1
Run Code Online (Sandbox Code Playgroud)
对于那些想知道它是如何工作的人,请查看:Boost Log 的简单记录器的“惰性求值”是如何工作的?
归档时间: |
|
查看次数: |
222 次 |
最近记录: |