BDE 4.14.0 Production release
|
#include <ball_loggermanager.h>
Public Member Functions | |
LoggerManager (const LoggerManagerConfiguration &configuration, bslma::Allocator *globalAllocator=0) | |
~LoggerManager () | |
Destroy this logger manager. | |
Logger * | allocateLogger (RecordBuffer *buffer) |
Logger * | allocateLogger (RecordBuffer *buffer, int scratchBufferSize) |
Logger * | allocateLogger (RecordBuffer *buffer, Observer *observer) |
Logger * | allocateLogger (RecordBuffer *buffer, int scratchBufferSize, Observer *observer) |
Logger * | allocateLogger (RecordBuffer *buffer, const bsl::shared_ptr< Observer > &observer) |
Logger * | allocateLogger (RecordBuffer *buffer, int scratchBufferSize, const bsl::shared_ptr< Observer > &observer) |
void | deallocateLogger (Logger *logger) |
Logger & | getLogger () |
void | setLogger (Logger *logger) |
Category * | addCategory (const char *categoryName, int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel) |
Category & | defaultCategory () |
Category * | lookupCategory (const char *categoryName) |
const Category * | setCategory (const char *categoryName) |
const Category * | setCategory (CategoryHolder *categoryHolder, const char *categoryName) |
Category * | setCategory (const char *categoryName, int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel) |
void | setMaxNumCategories (int length) |
void | deregisterAllObservers () |
int | deregisterObserver (const bsl::string_view &observerName) |
int | deregisterAttributeCollector (const bsl::string_view &collectorName) |
bsl::shared_ptr< Observer > | findObserver (const bsl::string_view &observerName) |
template<class t_OBSERVER > | |
int | findObserver (bsl::shared_ptr< t_OBSERVER > *result, const bsl::string_view &observerName) |
Observer * | observer () |
int | registerObserver (const bsl::shared_ptr< Observer > &observer, const bsl::string_view &observerName) |
int | registerAttributeCollector (const AttributeCollector &collector, const bsl::string_view &collectorName) |
void | resetDefaultThresholdLevels () |
void | setCategoryThresholdsToCurrentDefaults (Category *category) |
void | setCategoryThresholdsToFactoryDefaults (Category *category) |
int | setDefaultThresholdLevels (int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel) |
void | setDefaultThresholdLevelsCallback (DefaultThresholdLevelsCallback *callback) |
int | addRule (const Rule &value) |
int | addRules (const RuleSet &ruleSet) |
void | removeAllRules () |
Remove every rule from the set of rules maintained by this object. | |
int | removeRule (const Rule &value) |
int | removeRules (const RuleSet &ruleSet) |
void | publishAll () |
template<class t_CATEGORY_VISITOR > | |
void | visitCategories (const t_CATEGORY_VISITOR &visitor) |
template<class t_OBSERVER_VISITOR > | |
void | visitObservers (BSLS_COMPILERFEATURES_FORWARD_REF(t_OBSERVER_VISITOR) visitor) |
bslma::Allocator * | allocator () const |
const Category & | defaultCategory () const |
int | defaultPassThresholdLevel () const |
Return the default pass threshold level of this logger manager. | |
int | defaultRecordThresholdLevel () const |
Return the default record threshold level of this logger manager. | |
int | defaultTriggerAllThresholdLevel () const |
int | defaultTriggerThresholdLevel () const |
Return the default trigger threshold level of this logger manager. | |
bsl::shared_ptr< const Observer > | findObserver (const bsl::string_view &observerName) const |
template<class t_OBSERVER > | |
int | findObserver (bsl::shared_ptr< const t_OBSERVER > *result, const bsl::string_view &observerName) const |
bool | isCategoryEnabled (const Category *category, int severity) const |
const Category * | lookupCategory (const char *categoryName) const |
int | maxNumCategories () const |
int | numCategories () const |
const Observer * | observer () const |
const RuleSet & | ruleSet () const |
const UserFieldsPopulatorCallback * | userFieldsPopulatorCallback () const |
template<class t_CATEGORY_VISITOR > | |
void | visitCategories (const t_CATEGORY_VISITOR &visitor) const |
template<class t_OBSERVER_VISITOR > | |
void | visitObservers (BSLS_COMPILERFEATURES_FORWARD_REF(t_OBSERVER_VISITOR) visitor) const |
const ThresholdAggregate & | defaultThresholdLevels () const |
int | thresholdLevelsForNewCategory (ThresholdAggregate *levels, const char *categoryName) const |
Friends | |
class | LoggerManagerCategoryIter |
class | LoggerManagerCategoryManip |
This class is usually a singleton. It provides a factory for Logger
objects and is also a wrapper for category administration services. Note that some services provided by this class are available only after the singleton has been initialized.
AttributeCollector
is the type of a user-supplied functor used to visit a collection of attributes.
AttributeVisitor
is the type of a user-supplied functor invoked by an attribute collector for every attribute.
typedef LoggerManagerConfiguration::CategoryNameFilterCallback ball::LoggerManager::CategoryNameFilterCallback |
CategoryNameFilterCallback
is the type of the user-supplied functor that translates external category names to internal names.
typedef LoggerManagerConfiguration::DefaultThresholdLevelsCallback ball::LoggerManager::DefaultThresholdLevelsCallback |
DefaultThresholdLevelsCallback
is the type of the functor that determines default threshold levels for categories added to the registry by the setCategory(const char *)
method.
This typedef
is an alias for the type of the internal broadcast observer registry.
PublishAllTriggerCallback
is the type of the functor that is invoked to publish all record buffers of all active loggers (i.e., loggers allocated by the logger manager that have not yet been deallocated).
typedef LoggerManagerConfiguration::UserFieldsPopulatorCallback ball::LoggerManager::UserFieldsPopulatorCallback |
UserFieldsPopulatorCallback
is the type of a user-supplied callback functor used to populate the user-defined fields in each log record.
|
explicit |
Create a logger manager having the specified configuration
of defaults and attributes. Optionally specify a globalAllocator
used to supply memory. If globalAllocator
is 0, the currently installed global allocator is used. Note that the new logger manager is not the singleton logger manager used by macros of the BALL logging framework.
ball::LoggerManager::~LoggerManager | ( | ) |
Category * ball::LoggerManager::addCategory | ( | const char * | categoryName, |
int | recordLevel, | ||
int | passLevel, | ||
int | triggerLevel, | ||
int | triggerAllLevel | ||
) |
Add to the category registry of this logger manager a new category having the specified categoryName
and the specified recordLevel
, passLevel
, triggerLevel
, and triggerAllLevel
threshold levels, respectively, if (1) categoryName
is not present in the registry, (2) the number of categories in the registry is less than the registry capacity, and (3) each threshold level is in the range [0 .. 255]
. Return the address of the new modifiable category on success, and 0 otherwise. The behavior is undefined unless categoryName
is null-terminated.
|
inline |
Add a rule having the specified value
to the set of (unique) rules maintained by this object. Return the number of rules added (i.e., 1 on success and 0 if a rule with the same value is already present).
|
inline |
Add each rule in the specified ruleSet
to the set of (unique) rules maintained by this object. Return the number of rules added. Note that each rule having the same value as an existing rule will be ignored.
Logger * ball::LoggerManager::allocateLogger | ( | RecordBuffer * | buffer | ) |
Return the address of a modifiable logger managed by this logger manager configured with the specified record buffer
. Optionally specify a scratchBufferSize
for the logger's user-accessible message buffer. If scratchBufferSize
is not specified, the value configured at construction is used. Note that this method is primarily intended for use in multi-threaded applications, but can be used to partition logging streams even within a single thread. Also note that ownership of buffer
is not transferred, and hence, will not be destroyed (or otherwise affected) after the logger is deallocated.
Logger * ball::LoggerManager::allocateLogger | ( | RecordBuffer * | buffer, |
const bsl::shared_ptr< Observer > & | observer | ||
) |
Return the address of a modifiable logger managed by this logger manager having the specified observer
that receives published log records and configured with the specified record buffer
. Optionally specify a scratchBufferSize
for the logger's user-accessible message buffer. If scratchBufferSize
is not specified, the value configured at construction is used. Note that this method is primarily intended for use in multi-threaded applications, but can be used to partition logging streams even within a single thread. Also note that ownership of buffer
and observer
is not transferred, and hence, will not be destroyed (or otherwise affected) after the logger is deallocated.
Logger * ball::LoggerManager::allocateLogger | ( | RecordBuffer * | buffer, |
int | scratchBufferSize | ||
) |
Logger * ball::LoggerManager::allocateLogger | ( | RecordBuffer * | buffer, |
int | scratchBufferSize, | ||
const bsl::shared_ptr< Observer > & | observer | ||
) |
Logger * ball::LoggerManager::allocateLogger | ( | RecordBuffer * | buffer, |
int | scratchBufferSize, | ||
Observer * | observer | ||
) |
Logger * ball::LoggerManager::allocateLogger | ( | RecordBuffer * | buffer, |
Observer * | observer | ||
) |
Return the address of a modifiable logger managed by this logger manager having the specified observer
that receives published log records and configured with the specified record buffer
. Optionally specify a scratchBufferSize
for the logger's user-accessible message buffer. If scratchBufferSize
is not specified, the value configured at construction is used. Note that this method is primarily intended for use in multi-threaded applications, but can be used to partition logging streams even within a single thread. Also note that ownership of buffer
and observer
is not transferred, and hence, will not be destroyed (or otherwise affected) after the logger is deallocated.
observer
, together with the registerObserver
method (which takes a shared pointer to an observer
), instead.
|
inline |
Return the address of the modifiable allocator held by this logger manager.
|
static |
Create a logger manager that is not the singleton logger manager having the specified configuration
of defaults and attributes; load the newly-created logger manager into the specified manager
managed pointer. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. Note that this method does not create the singleton logger manager used by the macros of the BALL logging framework.
|
static |
Create a logger manager that is not the singleton logger manager having the specified observer
that receives published log records and the specified configuration
of defaults and attributes; load the newly-created logger manager into the specified manager
managed pointer. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. The behavior is undefined if observer
is 0, goes out of scope, or is otherwise destroyed. Note that this method does not create the singleton logger manager used by the macros of the BALL logging framework.
observer
, together with the registerObserver
method (which takes a shared pointer to an observer
), instead. void ball::LoggerManager::deallocateLogger | ( | Logger * | logger | ) |
Deallocate the specified logger
and release logger
from management by this logger manager. The behavior is undefined unless logger
was obtained by invoking the allocateLogger
method of this logger manager and logger
has not yet been deallocated. Note that this method is intended primarily for multi-threaded applications.
|
inline |
Return a non-const
reference to the Default Category in the category registry of this logger manager.
|
inline |
Return a const
reference to the Default Category in the category registry of this logger manager.
|
inline |
|
inline |
const ThresholdAggregate & ball::LoggerManager::defaultThresholdLevels | ( | ) | const |
Return the default threshold levels associated with this logger manager object.
|
inline |
Return the default trigger-all threshold level of this logger manager.
|
inline |
|
inline |
Remove all observers from the registry of observers maintained by this logger manager.
|
inline |
Remove the attribute collector having the specified collectorName
from the registry of collectors maintained by this logger manager. Return 0 if the collector having collectorName
was successfully deregistered from this logger manager, and a non-zero value (with no effect) otherwise.
|
inline |
Remove the observer having the specified observerName
from the registry of observers maintained by this logger manager. Return 0 if the observer having observerName
was successfully deregistered from this logger manager, and a non-zero value (with no effect) otherwise. Henceforth, the observer that had observerName
will no longer receive log records published by this logger manager.
|
inline |
Load into the specified result
a shared pointer to the observer of (template parameter) t_OBSERVER
type having the specified observerName
in the registry of this logger manager, and an empty shared pointer if there is no such observer otherwise. Return 0 if a non-empty shared pointer was loaded, and a non-zero value otherwise. Note that an empty shared pointer will be loaded if either no observer having observerName
is in the registry or the observer registered with that name is not of t_OBSERVER
type.
|
inline |
Load into the specified result
a shared pointer to the observer of (template parameter) t_OBSERVER
type having the specified observerName
in the registry of this logger manager, and an empty shared pointer if there is no such observer otherwise. Return 0 if a non-empty shared pointer was loaded, and a non-zero value otherwise. Note that an empty shared pointer will be loaded if either no observer having observerName
is in the registry or the observer registered with that name is not of t_OBSERVER
type.
|
inline |
Return a shared pointer to the observer having the specified observerName
in the registry of this logger manager, and an empty shared pointer if there is no such observer otherwise.
|
inline |
Return a shared pointer to the observer having the specified observerName
in the registry of this logger manager, and an empty shared pointer if there is no such observer otherwise.
Logger & ball::LoggerManager::getLogger | ( | ) |
Return a non-const
reference to a logger managed by this logger manager suitable for performing logging operations for this thread of execution.
|
static |
Return the address of a modifiable record with the specified fileName
and lineNumber
attributes, and whose memory is supplied by the currently installed default allocator. Note that the returned Record
must subsequently be supplied to a call to the LoggerManager::logMessage
method.
|
static |
Initialize the logger manager singleton. Optionally specify a configuration
describing how the singleton should be configured. If configuration
is not specified, a default constructed LoggerManagerConfiguration
object is used. Optionally specify a globalAllocator
used to supply memory. If globalAllocator
is 0, the currently installed global allocator is used. Return a non-const
reference to the logger manager singleton. This method has no effect (aside from logging a warning) if the logger manager singleton already exists.
|
static |
|
static |
Initialize the logger manager singleton with the specified singleton
. Optionally specify an adoptSingleton
flag indicating whether this method takes ownership of singleton
, in which case shutDownSingleton
will destroy singleton
. If adoptSingleton
is not specified, this method does not take ownership of singleton
(and shutDownSingleton
will not destroy it). Return 0 if the logger manager singleton was successfully initialized, and a non-zero value otherwise. This method has no effect (aside from logging a warning) if the logger manager singleton already exists, in which case this method does not take ownership of singleton
regardless of the value of adoptSingleton
. Note that this version of initSingleton
is meant for use only on Windows to initialize another dynamically loaded copy of the LoggerManager
system. Also note that a suitable singleton may be obtained by calling createLoggerManager
, or from the singleton
class method of an already-initialized LoggerManager
system.
|
static |
Initialize the logger manager singleton having the specified observer
that receives published log records. Optionally specify a configuration
describing how the singleton should be configured. If configuration
is not specified, a default constructed LoggerManagerConfiguration
object is used. Optionally specify a globalAllocator
used to supply memory. If globalAllocator
is 0, the currently installed global allocator is used. Return a non-const
reference to the logger manager singleton. This method has no effect (aside from logging a warning) if the logger manager singleton already exists. The behavior is undefined if observer
is 0, goes out of scope, or is otherwise destroyed.
observer
, together with the registerObserver
method (which takes a shared pointer to an observer
), instead.
|
static |
bool ball::LoggerManager::isCategoryEnabled | ( | const Category * | category, |
int | severity | ||
) | const |
Return true
if the specified severity
is more severe (i.e., is numerically less than) at least one of the threshold levels of the specified category
, and false
otherwise. If the returned value
is false
, then a subsequent call to getLogger().logMessage()
(with category
and severity
) will have no effect. This method compares severity
with the threshold levels determined by combining category->thresholdLevels()
with the thresholds provided by any relevant and active logging rules (in ruleSet()
) that apply to category
. Note that a rule applies to category
if the rule's pattern matches category->categoryName()
, and a rule is active if all the predicates defined for that rule are satisfied by the current thread's attributes (i.e., Rule::evaluate()
returns true
for the collection of attributes maintained by the current thread's AttributeContext
object).
|
inlinestatic |
Return true
if the logger manager singleton exists, and false
otherwise.
|
static |
Publish the specified record
using bsls::Log::platformDefaultMessageHandler
after setting its severity attribute to the specified severity
, and dispose of record
. The behavior is undefined unless record
was obtained by a call to the LoggerManager::getRecord
method. Note that record
will be invalid after this method returns.
Category * ball::LoggerManager::lookupCategory | ( | const char * | categoryName | ) |
Return the address of the modifiable category in the category registry of this logger manager having the specified categoryName
, or 0 if no such category exists. The behavior is undefined unless categoryName
is null-terminated.
const Category * ball::LoggerManager::lookupCategory | ( | const char * | categoryName | ) | const |
Return the address of the non-modifiable category in the category registry of this logger manager having the specified categoryName
, or 0 if no such category exists. The behavior is undefined unless categoryName
is null-terminated.
|
inline |
Return the current capacity of the category registry of this logger manager. A capacity of 0 implies that no limit will be imposed; otherwise, new categories may be added only if numCategories() < maxNumCategories()
. Note that 0 < maxNumCategories() < numCategories()
is a valid state, implying no new categories may be added.
|
inline |
Return the number of categories in the category registry of this logger manager.
Observer * ball::LoggerManager::observer | ( | ) |
Return the address of the modifiable legacy observer registered with this logger manager.
const Observer * ball::LoggerManager::observer | ( | ) | const |
Return the address of the non-modifiable observer registered with this logger manager.
|
static |
Block until access to the static buffer used for formatting messages is available. Return the address of the modifiable buffer to which this thread of execution has exclusive access, load the address of the mutex that protects the buffer into the specified *mutex
address, and load the size (in bytes) of the buffer into the specified bufferSize
address. The address remains valid, and the buffer remains locked by this thread of execution, this thread calls mutex->unlock()
. The behavior is undefined if this thread of execution currently holds a lock on the buffer. Note that the buffer is intended to be used only for formatting log messages immediately before calling logMessage
; other use may adversely affect performance for the entire program.
|
static |
Return a managed pointer that refers to the memory block to which this thread of execution has exclusive access and load the size (in bytes) of this buffer into the specified bufferSize
address. Note that this method is intended for internal use only.
|
inline |
Transmit to the observers registered with this logger manager all log records accumulated in the record buffers of all loggers managed by this logger manager, and indicate the publication cause to be MANUAL_PUBLISH_ALL
.
|
inline |
Add the specified collector
with the specified collectorName
to the registry of attribute collectors maintained by this logger manager. Return 0 if collector
was successfully registered with this logger manager, and a non-zero value (with no effect) otherwise. Note that this method will fail if a collector having collectorName
is already registered.
|
inline |
Add the specified observer
with the specified observerName
to the registry of observers maintained by this logger manager. Return 0 if observer
was successfully registered with this logger manager, and a non-zero value (with no effect) otherwise. Henceforth, all log records published by this logger manager are published to this observer, until observer
is deregistered. The behavior is undefined if a cyclic reference is created among registered observers. Note that this method will fail if an observer having observerName
is already registered.
|
inline |
|
inline |
Remove the rule having the specified value
from this set of rules maintained by this object. Return the number of rules removed (i.e., 1 on success and 0 if no rule having the same value is found.)
|
inline |
Remove each rule in the specified ruleSet
from this set of rules maintained by this object. Return the number of rules removed.
|
inline |
Reset the default threshold levels of this logger manager to the original "factory-supplied" default values or the factory overrides supplied at construction.
|
inline |
Return a const
reference to the rule set maintained by this object.
const Category * ball::LoggerManager::setCategory | ( | CategoryHolder * | categoryHolder, |
const char * | categoryName | ||
) |
Add to the category registry of this logger manager a new category having the specified categoryName
and default threshold levels if categoryName
is not present in the registry and the number of categories in the registry is less than the registry capacity. Return the address of the (possibly newly-created) non-modifiable category having categoryName
, if such a category exists, and the address of the non-modifiable Default Category otherwise. If the specified categoryHolder
is non-null, then also load into categoryHolder
the returned category and its maximum level and link categoryHolder
to the category if it has not yet been linked. The behavior is undefined unless categoryName
is null-terminated. Note that a valid category address is always returned.
|
inline |
Add to the category registry of this logger manager a new category having the specified categoryName
and default threshold levels if categoryName
is not present in the registry and the number of categories in the registry is less than the registry capacity. Return the address of the (possibly newly-created) non-modifiable category having categoryName
, if such a category exists, and the address of the non-modifiable Default Category otherwise. The behavior is undefined unless categoryName
is null-terminated. Note that a valid category address is always returned.
Category * ball::LoggerManager::setCategory | ( | const char * | categoryName, |
int | recordLevel, | ||
int | passLevel, | ||
int | triggerLevel, | ||
int | triggerAllLevel | ||
) |
Add to the category registry of this logger manager a new category having the specified categoryName
and recordLevel
, passLevel
, triggerLevel
, and triggerAllLevel
threshold levels, respectively, if (1) categoryName
is not present in the registry, (2) the number of categories in the registry is less than the registry capacity, and (3) recordLevel
, passLevel
, triggerLevel
, and triggerAllLevel
are all within the range [0 .. 255]
. If categoryName
is already present and each threshold level is within the valid range then reset the threshold levels of categoryName
to the specified values. Return the address of the (possibly newly-created) modifiable category having categoryName
if categoryName
was either created or its thresholds reset, and 0 otherwise. The behavior is undefined unless categoryName
is null-terminated. Note that 0, and not the Default Category, is returned on failure.
void ball::LoggerManager::setCategoryThresholdsToCurrentDefaults | ( | Category * | category | ) |
Set the threshold levels of the specified category
in the category registry of this logger manager to the current default threshold values. The behavior is undefined unless category
is non-null.
void ball::LoggerManager::setCategoryThresholdsToFactoryDefaults | ( | Category * | category | ) |
Set the threshold levels of the specified category
in the category registry of this logger manager to the original "factory-supplied" default values or the factory overrides supplied at construction. The behavior is undefined unless category
is non-null.
int ball::LoggerManager::setDefaultThresholdLevels | ( | int | recordLevel, |
int | passLevel, | ||
int | triggerLevel, | ||
int | triggerAllLevel | ||
) |
Set the default threshold levels of this logger manager to the specified recordLevel
, passLevel
, triggerLevel
, and triggerAllLevel
values, respectively, if each threshold level is in the range [0 .. 255]
. Return 0 on success, and a non-zero value otherwise (with no effect on any default threshold level).
void ball::LoggerManager::setDefaultThresholdLevelsCallback | ( | DefaultThresholdLevelsCallback * | callback | ) |
Set the default-thresholds callback of this logger manager to the specified callback
. The default-thresholds callback is used to determine default threshold levels for categories added to the registry by the setCategory(const char *)
method.
void ball::LoggerManager::setLogger | ( | Logger * | logger | ) |
Set the default logger used by this thread of execution to the specified logger
, or to the global default logger if logger
is 0. The behavior is undefined unless logger
was obtained from this logger manager, and this thread of execution does not hold exclusive access to the record buffer of its current default logger.
void ball::LoggerManager::setMaxNumCategories | ( | int | length | ) |
Set the capacity of the category registry of this logger manager to the specified length
. If length
is 0, no limit will be imposed. No categories are removed from the registry if the current number of categories exceeds length
. However, subsequent attempts to add categories to the registry will fail. The behavior is undefined unless 0 <= length
.
|
static |
Destroy the logger manager singleton and release all resources used by it. This method has no effect if the logger manager singleton does not exist (i.e., it has not been initialized or has already been destroyed). The behavior is undefined if this method is called from one thread while another thread is accessing the logger manager singleton (i.e., this method is not thread-safe).
|
inlinestatic |
Return a non-const
reference to the logger manager singleton. The behavior is undefined unless the logger manager singleton exists.
int ball::LoggerManager::thresholdLevelsForNewCategory | ( | ThresholdAggregate * | levels, |
const char * | categoryName | ||
) | const |
Load into the specified *levels
the threshold levels that would be set for a newly created category, irrespective of whether a category with the specified categoryName
is already in the registry. Return 0 on success and a non-zero value otherwise. If the client has configured a default threshold levels callback (see ball::LoggerManager::DefaultThresholdLevelsCallback
in the component doc), the categoryName
will be supplied to that callback which will set *levels
. Otherwise, if no default threshold levels callback has been provided, the default threshold levels are used. Note that this function will report an error if the callback returns invalid levels. Also note that if a category named categoryName
is already in the registry, the levels returned by this method may differ from the levels of that category.
const UserFieldsPopulatorCallback * ball::LoggerManager::userFieldsPopulatorCallback | ( | ) | const |
Return the address of the non-modifiable user populator functor registered with this logger manager, or 0 if there is no registered user populator functor.
|
inline |
Invoke the specified visitor
functor on each category managed by this object, providing that functor modifiable access to each category. visitor
must be a functor that can be called as if it had the following signature:
|
inline |
Invoke the specified visitor
functor on each category managed by this object, providing that functor non-modifiable access to each category. visitor
must be a functor that can be called as if it had the following signature:
|
inline |
Invoke the specified visitor
functor of (template parameter) t_OBSERVER_VISITOR
type on each element in the registry of this logger manager, supplying that functor modifiable access to each observer. visitor
must be a functor that can be called as if it had the following signature:
|
inline |
Invoke the specified visitor
functor of (template parameter) t_OBSERVER_VISITOR
type on each element in the registry of this logger manager, supplying that functor modifiable access to each observer. visitor
must be a functor that can be called as if it had the following signature:
|
friend |
|
friend |