[#BloombergLP-ball]
= xref:BloombergLP.adoc[BloombergLP]::ball
:relfileprefix: ../
:mrdocs:

Package namespace for logging components&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/ball/Administration.adoc[`Administration`] 
| This `struct` provides a namespace for logging administration utilities&period;
| xref:BloombergLP/ball/AsyncFileObserver.adoc[`AsyncFileObserver`] 
| Asynchronous observer that publishes log records to `stdout` and a file&period;
| xref:BloombergLP/ball/AsyncFileObserver_Record.adoc[`AsyncFileObserver&lowbar;Record`] 
| PRIVATE STRUCT&period; For use by the `ball&colon;&colon;AsyncFileObserver` implementation only&period; This `struct` holds a log record and its associated context&period;
| xref:BloombergLP/ball/Attribute.adoc[`Attribute`] 
| An `Attribute` object contains an attribute name which is not managed and an attribute value which is managed&period;
| xref:BloombergLP/ball/AttributeCollectorRegistry.adoc[`AttributeCollectorRegistry`] 
| This component maintains a registry of named functors (&quot;collectors&quot;) that are used to transform opaque user data into a set of `ball&colon;&colon;Attribute` objects&period;
| xref:BloombergLP/ball/AttributeContainer.adoc[`AttributeContainer`] 
| This class defines a protocol for a container of attribute values&period;
| xref:BloombergLP/ball/AttributeContainerList.adoc[`AttributeContainerList`] 
| This class provides an in&hyphen;core value&hyphen;semantic list of `AttributeContainer` object addresses&period; Attribute container addresses are added to this list using `pushFront()`, which returns an iterator located at the new element&period; A `AttributeContainerList&colon;&colon;iterator` object remains valid until the element referred to by the iterator is removed&period; Attribute container addresses can be removed using either `remove()`, `removeAll()`, or `removeAllAndRelease()`&period; This list object attempts to minimize the number of memory allocations it requires by placing the memory for elements that have been released in a free memory store, and re&hyphen;using the memory when new elements are added&period; The `removeAll()` removes all the elements from the list, but does not release any allocated memory (placing it in the free store)&period; The `removeAllAndRelease()` operation removes all elements and releases all allocated memory&period; Note that maintaining a free store is important for this component because the expectation is that elements will be both added and removed frequently&period;
| xref:BloombergLP/ball/AttributeContainerListIterator.adoc[`AttributeContainerListIterator`] 
| This class provides an STL&hyphen;style iterator over a sequence of `AttributeContainer` object addresses&period;
| xref:BloombergLP/ball/AttributeContainerList_Node.adoc[`AttributeContainerList&lowbar;Node`] 
| This is an implementation type of `AttributeContainerList` and should not be used by clients of this package&period;
| xref:BloombergLP/ball/AttributeContext.adoc[`AttributeContext`] 
| Mechanism for associating attributes with the current thread and evaluating logging rules&period;
| xref:BloombergLP/ball/AttributeContextProctor.adoc[`AttributeContextProctor`] 
| Proctor that destroys the current thread&apos;s attribute context on destruction&period;
| xref:BloombergLP/ball/AttributeContext_RuleEvaluationCache.adoc[`AttributeContext&lowbar;RuleEvaluationCache`] 
| Implementation type that evaluates and caches whether logging rules are active&period;
| xref:BloombergLP/ball/BroadcastObserver.adoc[`BroadcastObserver`] 
| This class provides a broadcasting implementation of the `Observer` protocol&period;
| xref:BloombergLP/ball/Category.adoc[`Category`] 
| This class provides a container for a category name and threshold levels&period;
| xref:BloombergLP/ball/CategoryCallbacks.adoc[`CategoryCallbacks`] 
| This struct provides a namespace for default threshold level related callback function types&period;
| xref:BloombergLP/ball/CategoryHolder.adoc[`CategoryHolder`] 
| This class holds a category, a threshold level, and a next&hyphen;holder pointer&period;
| xref:BloombergLP/ball/CategoryManager.adoc[`CategoryManager`] 
| This class manages a registry of categories&period;
| xref:BloombergLP/ball/CategoryManagerImpUtil.adoc[`CategoryManagerImpUtil`] 
| This class provides a suite of free functions used to help implement a manager of categories and category holders&period;
| xref:BloombergLP/ball/CategoryManagerIter.adoc[`CategoryManagerIter`] 
| Iterator providing read&hyphen;only access to category manager categories&period;
| xref:BloombergLP/ball/CategoryManagerManip.adoc[`CategoryManagerManip`] 
| Iterator providing modifiable access to category manager categories&period;
| xref:BloombergLP/ball/CategoryManager_RadixTree.adoc[`CategoryManager&lowbar;RadixTree`] 
| Space&hyphen;efficient associative container mapping string keys to `t&lowbar;VALUE`&period;
| xref:BloombergLP/ball/CategoryManager_RadixTree_ChildNodeGuard.adoc[`CategoryManager&lowbar;RadixTree&lowbar;ChildNodeGuard`] 
| RAII guard that removes a child node on exception during value emplacement&period;
| xref:BloombergLP/ball/CategoryManager_RadixTree_Node.adoc[`CategoryManager&lowbar;RadixTree&lowbar;Node`] 
| This class template represents a node in the radix tree&period;
| xref:BloombergLP/ball/Context.adoc[`Context`] 
| This class provides a container for the context of a transmitted log record&period;
| xref:BloombergLP/ball/CountingAllocator.adoc[`CountingAllocator`] 
| This class maintains a count of the total number of allocated bytes&period;
| xref:BloombergLP/ball/CstdioObserver.adoc[`CstdioObserver`] 
| This class provides a concrete implementation of the `Observer` protocol&period;
| xref:BloombergLP/ball/DefaultAttributeContainer.adoc[`DefaultAttributeContainer`] 
| A `DefaultAttributeContainer` object contains a collection of (unique) attributes values&period;
| xref:BloombergLP/ball/FileObserver.adoc[`FileObserver`] 
| Observer that publishes log records to `stdout` and optionally a file&period;
| xref:BloombergLP/ball/FileObserver2.adoc[`FileObserver2`] 
| Observer that publishes log records to a user&hyphen;specified file&period;
| xref:BloombergLP/ball/FilteringObserver.adoc[`FilteringObserver`] 
| This class provides a concrete `Observer` that filters log records&period;
| xref:BloombergLP/ball/FixedSizeRecordBuffer.adoc[`FixedSizeRecordBuffer`] 
| Concrete, thread&hyphen;safe fixed&hyphen;size buffer of record handles&period;
| xref:BloombergLP/ball/HierarchicalCategorySetting.adoc[`HierarchicalCategorySetting`] 
| This class provides a container for a name prefix and associated thresholds&period;
| xref:BloombergLP/ball/Log.adoc[`Log`] 
| Namespace for utility functions that simplify logger&hyphen;manager usage&period;
| xref:BloombergLP/ball/LogFileCleanerUtil.adoc[`LogFileCleanerUtil`] 
| This utility class provides functions for converting log file patterns and for cleaning up log files based on a configuration&period;
| xref:BloombergLP/ball/Log_Formatter.adoc[`Log&lowbar;Formatter`] 
| Aggregate of objects used by the `printf`&hyphen;style logging macros&period;
| xref:BloombergLP/ball/Log_Stream.adoc[`Log&lowbar;Stream`] 
| Aggregate of objects used by the C&plus;&plus; stream&hyphen;based logging macros&period;
| xref:BloombergLP/ball/Logger.adoc[`Logger`] 
| This class provides log record management services&period;
| xref:BloombergLP/ball/LoggerCategoryUtil.adoc[`LoggerCategoryUtil`] 
| This struct provides a suite of utility functions that facilitate the management of the categories in `LoggerManager`&period;
| xref:BloombergLP/ball/LoggerFunctorPayloads.adoc[`LoggerFunctorPayloads`] 
| This `struct` provides a namespace for logger manager functor payloads&period;
| xref:BloombergLP/ball/LoggerManager.adoc[`LoggerManager`] 
| This class is usually a singleton factory for `Logger` objects&period;
| xref:BloombergLP/ball/LoggerManagerCategoryIter.adoc[`LoggerManagerCategoryIter`] 
| Iterator providing read&hyphen;only access to logger manager categories&period;
| xref:BloombergLP/ball/LoggerManagerCategoryManip.adoc[`LoggerManagerCategoryManip`] 
| Iterator providing modifiable access to logger manager categories&period;
| xref:BloombergLP/ball/LoggerManagerConfiguration.adoc[`LoggerManagerConfiguration`] 
| This class provides constrained configuration parameters for a logger manager&period;
| xref:BloombergLP/ball/LoggerManagerDefaults.adoc[`LoggerManagerDefaults`] 
| This class provides constrained configuration parameters for a logger manager&period;
| xref:BloombergLP/ball/LoggerManagerScopedGuard.adoc[`LoggerManagerScopedGuard`] 
| This class implements a scoped guard that, on construction, creates the logger manager singleton, and, on destruction, destroys the singleton&period;
| xref:BloombergLP/ball/ManagedAttribute.adoc[`ManagedAttribute`] 
| A `ball&colon;&colon;ManagedAttribute` object contains a `ball&colon;&colon;Attribute` object and provides storage for the attribute&apos;s name&period;
| xref:BloombergLP/ball/ManagedAttributeSet.adoc[`ManagedAttributeSet`] 
| This class implements a value&hyphen;semantic collection of unique attributes&period;
| xref:BloombergLP/ball/MultiplexObserver.adoc[`MultiplexObserver`] 
| This class provides a multiplexing implementation of the `Observer` protocol&period;
| xref:BloombergLP/ball/Observer.adoc[`Observer`] 
| This class provides a protocol for receiving and processing log record output&period;
| xref:BloombergLP/ball/ObserverAdapter.adoc[`ObserverAdapter`] 
| This class provides a helper for implementing the `Observer` protocol&period;
| xref:BloombergLP/ball/ObserverFormatterImp.adoc[`ObserverFormatterImp`] 
| Provide shared formatting support for scheme&hyphen;based log observers&period;
| xref:BloombergLP/ball/PatternUtil.adoc[`PatternUtil`] 
| This utility class provides functions relating to pattern matching for strings&period;
| xref:BloombergLP/ball/Record.adoc[`Record`] 
| Forward declaration of the log record type published by observers&period;
| xref:BloombergLP/ball/RecordAttributes.adoc[`RecordAttributes`] 
| This class provides a container for a fixed set of attributes appropriate for logging&period;
| xref:BloombergLP/ball/RecordBuffer.adoc[`RecordBuffer`] 
| Provide a protocol (or pure interface) for managing record handles (specifically instances of `bsl&colon;&colon;shared&lowbar;ptr&lt;Record&gt;`)&period;
| xref:BloombergLP/ball/RecordFormatterFunctor.adoc[`RecordFormatterFunctor`] 
| This struct provides a namespace for a typedef of the functor used for formatting log records to a stream&period;
| xref:BloombergLP/ball/RecordFormatterOptions.adoc[`RecordFormatterOptions`] 
| This class provides a value&hyphen;semantic type for representing options used to configure log record formatters&period;
| xref:BloombergLP/ball/RecordFormatterRegistryUtil.adoc[`RecordFormatterRegistryUtil`] 
| This utility provides a namespace for functions to create log record formatters based on URI&hyphen;like scheme identifiers&period;
| xref:BloombergLP/ball/RecordFormatterTimezone.adoc[`RecordFormatterTimezone`] 
| This struct provides a namespace for enumerating timezone values for timestamps in record formatters&period;
| xref:BloombergLP/ball/RecordJsonFormatter.adoc[`RecordJsonFormatter`] 
| This class provides a function object that formats a log record as JSON text elements and renders them to an output stream&period;
| xref:BloombergLP/ball/RecordJsonFormatter_FieldFormatter.adoc[`RecordJsonFormatter&lowbar;FieldFormatter`] 
| Forward declaration for a field formatter used by `RecordJsonFormatter`&period;
| xref:BloombergLP/ball/RecordStringFormatter.adoc[`RecordStringFormatter`] 
| This class provides a value&hyphen;semantic log record formatter that holds a `printf`&hyphen;style format specification and a timestamp offset&period;
| xref:BloombergLP/ball/Rule.adoc[`Rule`] 
| This class defines a value&hyphen;semantic object that holds a pattern, four threshold levels, and an attribute set&period;
| xref:BloombergLP/ball/RuleSet.adoc[`RuleSet`] 
| This class manages a set of unique rule values&period;
| xref:BloombergLP/ball/ScopedAttribute.adoc[`ScopedAttribute`] 
| This class provides a scoped guard that sets a single BALL attribute in the current thread&period;
| xref:BloombergLP/ball/ScopedAttribute_Container.adoc[`ScopedAttribute&lowbar;Container`] 
| This component&hyphen;private class is a concrete implementation of the `AttributeContainer` protocol for a single attribute&period;
| xref:BloombergLP/ball/ScopedAttributes.adoc[`ScopedAttributes`] 
| This class provides a scoped guard that installs an `AttributeContainer` in the current attribute context&period;
| xref:BloombergLP/ball/Severity.adoc[`Severity`] 
| This struct provides a namespace for enumerating severity levels&period;
| xref:BloombergLP/ball/SeverityUtil.adoc[`SeverityUtil`] 
| This `struct` provides a namespace for non&hyphen;primitive procedures on the `Severity&colon;&colon;Level` enumeration&period;
| xref:BloombergLP/ball/StreamObserver.adoc[`StreamObserver`] 
| This class provides a concrete implementation of the `Observer` protocol&period;
| xref:BloombergLP/ball/TestObserver.adoc[`TestObserver`] 
| This class provides an instrumented implementation of the `Observer` protocol suitable for testing&period;
| xref:BloombergLP/ball/ThresholdAggregate.adoc[`ThresholdAggregate`] 
| This class implements an aggregate of the four logging threshold levels&period;
| xref:BloombergLP/ball/ThresholdAggregateUtil.adoc[`ThresholdAggregateUtil`] 
| This class provides helper methods for working with `ball&colon;&colon;ThresholdAggregate` objects&period;
| xref:BloombergLP/ball/ThresholdDefaults.adoc[`ThresholdDefaults`] 
| This struct provides a namespace for default threshold level related constants&period;
| xref:BloombergLP/ball/Transmission.adoc[`Transmission`] 
| This struct provides a namespace for enumerating the causes of the transmission of a log record&period;
| xref:BloombergLP/ball/UserFieldType.adoc[`UserFieldType`] 
| This `struct` provides a namespace for enumerating month&hyphen;of&hyphen;year values&period; See `Enum` in the TYPES sub&hyphen;section for details&period;
| xref:BloombergLP/ball/UserFieldValue.adoc[`UserFieldValue`] 
| This class implements a value&hyphen;semantic type for representing the value of a user field in a log record&period;
| xref:BloombergLP/ball/UserFields.adoc[`UserFields`] 
| This class implements a value&hyphen;semantic type for representing a sequence of (randomly accessible) user field values&period;
|===


== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/ball/Predicate.adoc[`Predicate`] 
| DEPRECATED&colon; Use `ball&colon;&colon;ManagedAttribute` instead&period;
| xref:BloombergLP/ball/PredicateSet.adoc[`PredicateSet`] 
| DEPRECATED&colon; Use `ball&colon;&colon;ManagedAttributeSet` instead&period;
|===


== Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/ball/ball_log_getCategoryHolder.adoc[`ball&lowbar;log&lowbar;getCategoryHolder`] 
| Return the address of the specified `categoryHolder`&period;
| xref:BloombergLP/ball/swap-0b.adoc[`swap`] 
| `swap` overloads
| xref:BloombergLP/ball/operator_lshift-003.adoc[`operator&lt;&lt;`] 
| Stream insertion operators
| xref:BloombergLP/ball/operator_eq-06.adoc[`operator&equals;&equals;`] 
| Equality operators
| xref:BloombergLP/ball/operator_not_eq-03b.adoc[`operator!&equals;`] 
| Inequality operators
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
