我正在尝试创建一个类似log4c的Boost记录器。 用“文件”,“功能”,“线”等装饰我的日志记录。 还创建了一个自定义过滤器,它通过
获取所有属性集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”,“Function”是来自 LINE , FILE 和 FUNCTION 宏的“明显”值(我不知道如何逃避双下划线,对不起)。
令我惊讶的是,logrecord只包含“全局”记录成员,如“Severity”,“LineID”,“TimeStamp”等,但不是我的自定义属性 在日志时创建(例如行,文件,函数等)。显然,使用我的自定义格式化程序将它们写入日志目的地没有任何问题。
我显然错过了一些非常简单的事情,请注意我 谷歌搜索了半天没有任何运气。
有人可以指导我,我错过了什么? 谢谢,
答案 0 :(得分:0)
确定。因此在执行过滤器后会附加常规属性(我觉得很奇怪,但情况确实如此)。所以我需要使用范围属性