0
我正在尝试创建一个类似log4c的Boost记录器。 装饰了我的日志记录的东西像“文件”,“功能”,“行”等 还创建了一个自定义过滤器,它可以获取设置的所有属性通过Boost.Log中的属性值筛选器(V2)
bool Filter(const boost::log::attribute_value_set& set)
{
for (boost::log::attribute_value_set::const_iterator it=set.begin(); it != set.end(); ++it)
{
std::cout << "Name " << it->first << std::endl;
}
[...]
}
日志的基础是严重性过滤器是通过创建
BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger,boost::log::sources::severity_logger_mt <SeverityLevel>)
其中SeverityLevel是客户枚举。
我创建像日志记录:
BOOST_LOG_SEV(my_logger::get(),level) << boost::log::add_value("Mask", mask) << boost::log::add_value("Line", line) << boost::log::add_value("File", File) << boost::log::add_value("Function", Function) << l_line;
其中, “行”, “文件”, “功能” 是从LINE,FILE和功能 '明显的' 价值宏(我不知道如何逃避双下划线,对不起)。令人惊讶的是,logrecord只包含像“Severity”,“LineID”,“TimeStamp”等的“全局”记录成员,但不是我在记录时创建的自定义属性 (例如Line,File,Function等)。显然,它们是用我自定义的格式化程序写入日志目标的,没有任何问题。
我明显错过了一些非常简单的事情,介意我 谷歌搜索这半天没有任何运气。
有人可以指导我什么,我失踪了? 谢谢,
该死的。我完全错过了www.boost.org/doc/libs/1_58_0/libs/log/doc/html/log/rationale/why_attribute_manips_dont_affect_filters.html – harsszegi