我关注了这篇文章:http://www.boost.org/doc/libs/1_59_0/libs/log/doc/html/log/detailed/attributes.html
<filter "abc.def">
type record_transformer
enable_ruby true
<record>
hostname "#{Socket.gethostname}"
</record>
</filter>
只有一次使用nameValue设置Name属性,并且每个都保持不变。 所以我使用set()方法设置新值。但是当我们在log()方法中传递一个新值时,Name没有使用新的nameValue进行更新。
Boost版本:1.59和操作系统:Ubuntu 15.04
解决此问题的任何方法。
提前致谢。
答案 0 :(得分:1)
问题在于您尝试在每次调用时添加属性,并且只有第一次调用才会成功。
记录器的add_attribute
方法与关联容器上的insert
行为类似。它返回一个迭代器和一个bool
,指示是否已添加新属性,或者记录器的属性集中是否已存在具有相同名称的属性。在后一种情况下,插入没有发生,返回的迭代器指向集合中的现有属性。
您应该使用返回的迭代器来设置新值。您需要使用attribute_cast
将通过迭代器获得的通用attribute
包装器转换为mutable_constant
。