gpt4 book ai didi

c++ - 如何在配置文件中配置 Boost 日志过滤器

转载 作者:行者123 更新时间:2023-11-30 05:16:32 24 4
gpt4 key购买 nike

我在 Windows 10 上的 VS2015 中使用 Boost 1.63。

代码如下Boost example .

这是代码,似乎“severityLogger.open_record”生成的记录无效,它没有进入 if 语句。

#include <boost/format.hpp>
#include <boost/locale/generator.hpp>
#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/from_settings.hpp>
#include <boost/log/utility/setup/settings_parser.hpp>
#include <boost/phoenix.hpp>

namespace logging = boost::log;
namespace expr = boost::log::expressions;
namespace keywords = boost::log::keywords;
namespace sinks = boost::log::sinks;
namespace src = boost::log::sources;

src::wseverity_logger<logging::trivial::severity_level> severityLogger;
std::wifstream strm(L"config\\logger.ini");
strm.imbue(std::locale(strm.getloc(), new std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header>));
auto settings = logging::parse_settings(strm);
logging::init_from_settings(settings);
logging::add_common_attributes();

auto rec = severityLogger.open_record(keywords::severity = logging::trivial::severity_level::info);
if (rec) { // Unable to go here !!!
logging::wrecord_ostream strm(rec);
strm << L"Some message";
strm.flush();
severityLogger_.push_record(boost::move(rec));
}

但是,如果我添加这段代码,它会工作正常:

logging::core::get()->set_filter(
logging::trivial::severity >= logging::trivial::info);

这是我的配置文件:

[Core]
DisableLogging=false
Filter="%Severity% >= info"

[Sinks.File]
Destination=TextFile
FileName="App_%Y-%m-%d.%N.log"
Format="%TimeStamp% %Severity% - %Message%"
AutoFlush=true
TimeBasedRotation="00:00:00"
RotationSize=10485760

最佳答案

问题是默认情况下过滤器解析器不期望logging::trivial::severity_level 类型的属性。结果,已解析的过滤器无法识别严重性级别并拒绝日志记录。

您需要按照this 中的说明通过注册过滤器工厂来指示属性值类型部分。基本上,这需要对任何具有值类型而不是 this 中提到的属性来完成。部分。建议注册所有属性,即使是那些列出的属性,因为否则库在处理过滤器时必须对默认支持的所有类型执行更昂贵的查找。

您可能还需要注册一个格式化程序工厂,类似于过滤器工厂。

关于c++ - 如何在配置文件中配置 Boost 日志过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42620333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com