BloombergLP::ball::AttributeContext

Mechanism for associating attributes with the current thread and evaluating logging rules.

Synopsis

Declared in <ball_attributecontext.h>

class AttributeContext;

Description

This class provides a mechanism for associating attributes with the current thread, and evaluating the logging rules associated with a category using those stored attributes. AttributeContext contains class data members that must be initialized (using the initialize class method) with a CategoryManager object containing a RuleSet that represents the currently installed logging rules for the process. Clients can obtain the context for the current thread by calling the getContext class method. The addAttributes and removeAttributes methods are used to add and remove collections of attributes from the (thread-local) context object. Finally, AttributeContext provides methods (used primarily by other components in the ball package') to determine the effect of the current logging rules on the logging thresholds of a category. The hasRelevantActiveRules method returns true if there are any relevant and active rules that might modify the logging thresholds of the supplied category. A rule is "relevant" if the rule's pattern matches the category's name, and a rule is "active" if all the attributes defined for the rule are satisfied by the current thread's attributes (i.e., Rule::evaluate returns true for the collection of attributes maintained for the current thread by the thread's AttributeContext object). The determineThresholdLevels method returns the logging threshold levels for a category, factoring in any active rules that apply to the category that might override the category's thresholds. The behavior for the hasRelevantActiveRules and determineThresholdLevels methods is undefined unless initialize has been called. Note that, in practice, initialize is called internally when the logger manager singleton is initialized; clients ordinarily should not call initialize directly.

Type Aliases

NameDescription
iterator Iterator over the attribute containers in an AttributeContext.

Member Functions

NameDescription
addAttributes Add the specified attributes container to this context.
clearCache Clear this object's cache of evaluated rules.
containers Return the list of attribute containers maintained by this object.
determineThresholdLevels Populate the specified levels with the threshold levels for the specified category.
hasAttribute Return whether an attribute with the specified value exists in this context.
hasRelevantActiveRules Return true if there is at least one relevant and active rule for the specified category.
print Format this object to the specified output stream.
removeAttributes Remove the specified element from this context's attribute containers.

Static Member Functions

NameDescription
getContext Return the address of the current thread's attribute context, creating one if needed.
initialize Initialize the static data members of AttributeContext using the specified categoryManager.
lookupContext Return the address of the current thread's attribute context, or 0 if none exists.
reset Reset the static data members of AttributeContext to their initial state.
visitAttributes Invoke the specified visitor for all attributes in all attribute containers maintained by this object.

Friends

NameDescription
BloombergLP::ball::AttributeContextProctorProctor that destroys the current thread's attribute context on destruction.