Boost 1.59 mutable_constant的问题

时间:2015-12-02 07:59:47

标签: c++ boost

我关注了这篇文章: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

解决此问题的任何方法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题在于您尝试在每次调用时添加属性,并且只有第一次调用才会成功。

记录器的add_attribute方法与关联容器上的insert行为类似。它返回一个迭代器和一个bool,指示是否已添加新属性,或者记录器的属性集中是否已存在具有相同名称的属性。在后一种情况下,插入没有发生,返回的迭代器指向集合中的现有属性。

您应该使用返回的迭代器来设置新值。您需要使用attribute_cast将通过迭代器获得的通用attribute包装器转换为mutable_constant