2015-12-02 66 views
0

问题我跟着这个帖子:http://www.boost.org/doc/libs/1_59_0/libs/log/doc/html/log/detailed/attributes.html与升压1.59 mutable_constant

log(string nameValue) { 
    attrs::mutable_constant<string> Name(nameValue); 
    logger::get().add_attribute("Name", Name); 
    Name.set(nameValue); 
    cout << "name is: " << Name; 
} 

只有一次的名称属性设置与nameValue并保持作为含量的不同,每。 所以我使用set()方法来设置新的值。但是当我们在log()方法中传递一个新值时,名称没有被更新为新的nameValue。

加速版本:1.59和操作系统:Ubuntu的15.04

任何解决这个问题。

在此先感谢。

回答

0

问题是您试图在每次调用时添加属性,并且只有第一次调用实际上成功。

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

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

+0

谢谢安德烈这个问题解决了。但我仍然面临问题与升压日志旋转不工作时,我们设置附加模式,我提出了单独的问题:http://stackoverflow.com/questions/34037325/problems-with-file-rotation-after-adding-附加标志,在升压-1-59-LOG-V2 – SGPJ