8#ifndef INCLUDED_BALL_LOGGERMANAGER
9#define INCLUDED_BALL_LOGGERMANAGER
957#include <balscm_version.h>
986#include <bsl_functional.h>
988#include <bsl_memory.h>
990#include <bsl_string_view.h>
1041 d_userFieldsPopulator;
1045 *d_attributeCollectors_p;
1057 char *d_scratchBuffer_p;
1063 int d_scratchBufferSize;
1104 int scratchBufferSize,
1144 void logMessage(
const Category& category,
1223#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1277#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1337#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1347 static bool s_isSingletonOwned;
1362 d_userFieldsPopulator;
1367 d_attributeCollectors;
1386 d_publishAllCallback;
1391 int d_scratchBufferSize;
1398 d_defaultLoggersLock;
1423 static void initSingletonImpl(
1429#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1467#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1514#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1572 bool adoptSingleton =
false);
1658#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1678 int scratchBufferSize,
1697 int scratchBufferSize,
1752 int triggerAllLevel);
1793 const char *categoryName);
1816 int triggerAllLevel);
1863 template <
class t_OBSERVER>
1867#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1927 int triggerAllLevel);
1950 int triggerAllLevel);
1995 template <
class t_CATEGORY_VISITOR>
2007 template <
class t_OBSERVER_VISITOR>
2049 template <
class t_OBSERVER>
2090#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2114 template <
class t_CATEGORY_VISITOR>
2126 template <
class t_OBSERVER_VISITOR>
2151 const char *categoryName)
const;
2171#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2213#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2265 operator const void *()
const;
2330 operator const void *()
const;
2344#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2348 return d_scratchBuffer_p;
2368 return d_scratchBufferSize;
2374 return d_recordPool.numObjects() - d_recordPool.numAvailableObjects();
2391 return *s_singleton_p;
2414 return d_categoryManager.
setCategory(categoryName);
2419 const char *categoryName)
2422 return d_categoryManager.
setCategory(categoryHolder, categoryName);
2430 int triggerAllLevel)
2433 return d_categoryManager.
setCategory(categoryName,
2468 int triggerAllLevel)
2471 return d_categoryManager.
addCategory(categoryName,
2491 int triggerAllLevel)
2508 const char *categoryNamePrefix,
2512 int triggerAllLevel)
2539 const char *categoryName)
const
2552 d_observer->deregisterAllObservers();
2558 return d_observer->deregisterObserver(observerName);
2572 return d_observer->findObserver(observerName);
2575template <
class t_OBSERVER>
2580 return d_observer->findObserver(result, observerName);
2588 return d_observer->registerObserver(
observer, observerName);
2597 return d_attributeCollectors.
addCollector(collector, collectorName);
2612 return d_categoryManager.
addRule(value);
2647template <
class t_CATEGORY_VISITOR>
2654template <
class t_OBSERVER_VISITOR>
2659 d_observer->visitObservers(
2668 return getLoggerSlow();
2677 return d_allocator_p;
2719template <
class t_OBSERVER>
2727 return observerPtr->
findObserver(result, observerName);
2739 return d_categoryManager.
length();
2745 return d_categoryManager.
ruleSet();
2748template <
class t_CATEGORY_VISITOR>
2755template <
class t_OBSERVER_VISITOR>
2760 d_observer->visitObservers(
2769#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2771LoggerManagerScopedGuard::LoggerManagerScopedGuard(
2781LoggerManagerScopedGuard::LoggerManagerScopedGuard(
2794#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2802LoggerManagerCategoryIter::LoggerManagerCategoryIter(
2804: d_iter(loggerManager.d_categoryManager)
2817LoggerManagerCategoryIter::operator
const void *()
const
2834LoggerManagerCategoryManip::LoggerManagerCategoryManip(
2836: d_manip(&loggerManager->d_categoryManager)
2856LoggerManagerCategoryManip::operator
const void *()
const
Definition ball_attributecollectorregistry.h:182
int addCollector(const Collector &collector, const bsl::string_view &name)
bsl::function< void(const ball::Attribute &)> Visitor
Visitor is the type of a user-supplied visit functor.
Definition ball_attributecollectorregistry.h:188
int removeCollector(const bsl::string_view &name)
Definition ball_broadcastobserver.h:226
bsl::shared_ptr< Observer > findObserver(const bsl::string_view &observerName)
Definition ball_category.h:367
Definition ball_categorymanager.h:1086
Definition ball_categorymanager.h:1147
void advance()
Definition ball_categorymanager.h:1367
Definition ball_categorymanager.h:426
void setMaxNumCategories(int length)
Definition ball_categorymanager.h:1250
Category * lookupCategory(const char *categoryName)
void setCategoryThresholdsToCurrentDefaults(Category *category) const
Category * addCategory(const char *categoryName, int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
Definition ball_categorymanager.h:1215
const RuleSet & ruleSet() const
Definition ball_categorymanager.h:1296
int addRule(const Rule &ruleToAdd)
int addRules(const RuleSet &ruleSet)
int defaultRecordThresholdLevel() const
Return the default record threshold level of this object.
int removeRules(const RuleSet &ruleSet)
int maxNumCategories() const
Definition ball_categorymanager.h:1289
int setThresholdLevelsHierarchically(const char *categoryNamePrefix, int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
int removeRule(const Rule &ruleToRemove)
int defaultTriggerThresholdLevel() const
Return the default trigger threshold level of this object.
int defaultTriggerAllThresholdLevel() const
Return the default trigger-all threshold level of this object.
ThresholdAggregate defaultThresholdLevels() const
Return the default threshold levels associated with this object.
Category * addCategoryHierarchically(const char *categoryName)
int length() const
Definition ball_categorymanager.h:1282
Category & defaultCategory()
Definition ball_categorymanager.h:1232
void setCategoryThresholdsToFactoryDefaults(Category *category) const
int setDefaultThresholdLevels(int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
int defaultPassThresholdLevel() const
Return the default pass threshold level of this object.
void visitCategories(const t_CATEGORY_VISITOR &visitor)
Definition ball_categorymanager.h:1257
void setDefaultThresholdLevelsCallback(const DefaultThresholdLevelsCallback *defaultThresholdLevelsCallback)
void resetDefaultThresholdLevels()
int thresholdLevelsForNewCategory(ThresholdAggregate *levels, const char *categoryName) const
const Category * setCategory(const char *categoryName)
Definition ball_categorymanager.h:1244
Definition ball_category.h:184
Definition ball_context.h:297
Definition ball_loggermanager.h:2226
const Category & operator()() const
Definition ball_loggermanager.h:2823
~LoggerManagerCategoryIter()=default
void operator++()
Definition ball_loggermanager.h:2810
Definition ball_loggermanager.h:2285
~LoggerManagerCategoryManip()=default
Category & operator()()
Definition ball_loggermanager.h:2849
void advance()
Definition ball_loggermanager.h:2843
Definition ball_loggermanagerconfiguration.h:283
TriggerMarkers
Definition ball_loggermanagerconfiguration.h:327
LogOrder
Definition ball_loggermanagerconfiguration.h:304
Definition ball_loggermanager.h:2162
~LoggerManagerScopedGuard()
Definition ball_loggermanager.h:2789
Definition ball_loggermanager.h:1293
static LoggerManager & initSingleton(Observer *observer, const LoggerManagerConfiguration &configuration, bslma::Allocator *globalAllocator=0)
int defaultPassThresholdLevel() const
Return the default pass threshold level of this logger manager.
Definition ball_loggermanager.h:2687
int addRules(const RuleSet &ruleSet)
Definition ball_loggermanager.h:2616
BroadcastObserver::ObserverRegistry ObserverRegistry
Definition ball_loggermanager.h:1330
int defaultTriggerThresholdLevel() const
Return the default trigger threshold level of this logger manager.
Definition ball_loggermanager.h:2705
Category * addCategoryHierarchically(const char *categoryName)
Definition ball_loggermanager.h:2398
int defaultTriggerAllThresholdLevel() const
Definition ball_loggermanager.h:2699
int numCategories() const
Definition ball_loggermanager.h:2737
bool isCategoryEnabled(const Category *category, int severity) const
bsl::shared_ptr< Observer > findObserver(const bsl::string_view &observerName)
Definition ball_loggermanager.h:2570
CategoryCallbacks::DefaultThresholdLevels DefaultThresholdLevelsCallback
Definition ball_loggermanager.h:1306
int deregisterObserver(const bsl::string_view &observerName)
Definition ball_loggermanager.h:2556
int defaultRecordThresholdLevel() const
Return the default record threshold level of this logger manager.
Definition ball_loggermanager.h:2693
LoggerManagerConfiguration::UserFieldsPopulatorCallback UserFieldsPopulatorCallback
Definition ball_loggermanager.h:1318
bslma::Allocator * allocator() const
Definition ball_loggermanager.h:2675
AttributeCollectorRegistry::Visitor AttributeVisitor
Definition ball_loggermanager.h:1326
int registerAttributeCollector(const AttributeCollector &collector, const bsl::string_view &collectorName)
Definition ball_loggermanager.h:2593
Logger * allocateLogger(RecordBuffer *buffer, int scratchBufferSize, Observer *observer)
~LoggerManager()
Destroy this logger manager.
const Category * setCategory(const char *categoryName)
Definition ball_loggermanager.h:2411
void setDefaultThresholdLevelsCallback(DefaultThresholdLevelsCallback *callback)
Definition ball_loggermanager.h:2500
void removeAllRules()
Remove every rule from the set of rules maintained by this object.
Definition ball_loggermanager.h:2622
int thresholdLevelsForNewCategory(ThresholdAggregate *levels, const char *categoryName) const
Definition ball_loggermanager.h:2537
static char * obtainMessageBuffer(bslmt::Mutex **mutex, int *bufferSize)
void publishAll()
Definition ball_loggermanager.h:2642
static LoggerManager & initSingleton(Observer *observer, bslma::Allocator *globalAllocator=0)
int setDefaultThresholdLevels(int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
Definition ball_loggermanager.h:2488
const UserFieldsPopulatorCallback * userFieldsPopulatorCallback() const
void deregisterAllObservers()
Definition ball_loggermanager.h:2550
Logger * allocateLogger(RecordBuffer *buffer, int scratchBufferSize)
ThresholdAggregate defaultThresholdLevels() const
Definition ball_loggermanager.h:2524
void resetDefaultThresholdLevels()
Definition ball_loggermanager.h:2602
void visitCategories(const t_CATEGORY_VISITOR &visitor)
Definition ball_loggermanager.h:2649
void setMaxNumCategories(int length)
Definition ball_loggermanager.h:2441
Logger * allocateLogger(RecordBuffer *buffer)
Category * addCategory(const char *categoryName, int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
Definition ball_loggermanager.h:2464
void visitObservers(BSLS_COMPILERFEATURES_FORWARD_REF(t_OBSERVER_VISITOR) visitor)
Definition ball_loggermanager.h:2656
int removeRule(const Rule &value)
Definition ball_loggermanager.h:2628
int addRule(const Rule &value)
Definition ball_loggermanager.h:2610
static void logMessage(int severity, Record *record)
void setCategoryThresholdsToFactoryDefaults(Category *category)
Definition ball_loggermanager.h:2455
static LoggerManager & singleton()
Definition ball_loggermanager.h:2389
static int initSingleton(LoggerManager *singleton, bool adoptSingleton=false)
int deregisterAttributeCollector(const bsl::string_view &collectorName)
Definition ball_loggermanager.h:2562
Logger & getLogger()
Definition ball_loggermanager.h:2664
static Record * getRecord(const bsl::string_view &fileName, int lineNumber)
AttributeCollectorRegistry::Collector AttributeCollector
Definition ball_loggermanager.h:1322
Logger * allocateLogger(RecordBuffer *buffer, const bsl::shared_ptr< Observer > &observer)
Category * lookupCategory(const char *categoryName)
Definition ball_loggermanager.h:2479
int setThresholdLevelsHierarchically(const char *categoryNamePrefix, int recordLevel, int passLevel, int triggerLevel, int triggerAllLevel)
Definition ball_loggermanager.h:2507
int registerObserver(const bsl::shared_ptr< Observer > &observer, const bsl::string_view &observerName)
Definition ball_loggermanager.h:2585
int maxNumCategories() const
Definition ball_loggermanager.h:2731
void setLogger(Logger *logger)
Logger * allocateLogger(RecordBuffer *buffer, Observer *observer)
int removeRules(const RuleSet &ruleSet)
Definition ball_loggermanager.h:2634
static LoggerManager & initSingleton(const LoggerManagerConfiguration &configuration, bslma::Allocator *globalAllocator=0)
Logger * allocateLogger(RecordBuffer *buffer, int scratchBufferSize, const bsl::shared_ptr< Observer > &observer)
static bool isInitialized()
Definition ball_loggermanager.h:2383
static void createLoggerManager(bslma::ManagedPtr< LoggerManager > *manager, Observer *observer, const LoggerManagerConfiguration &configuration, bslma::Allocator *basicAllocator=0)
Category & defaultCategory()
Definition ball_loggermanager.h:2405
static bslma::ManagedPtr< char > obtainMessageBuffer(int *bufferSize)
const Observer * observer() const
static void shutDownSingleton()
LoggerManager(const LoggerManagerConfiguration &configuration, bslma::Allocator *globalAllocator=0)
void setCategoryThresholdsToCurrentDefaults(Category *category)
Definition ball_loggermanager.h:2448
static LoggerManager & initSingleton(bslma::Allocator *globalAllocator=0)
Logger::PublishAllTriggerCallback PublishAllTriggerCallback
Definition ball_loggermanager.h:1312
static void createLoggerManager(bslma::ManagedPtr< LoggerManager > *manager, const LoggerManagerConfiguration &configuration, bslma::Allocator *basicAllocator=0)
CategoryCallbacks::NameFilter CategoryNameFilterCallback
Definition ball_loggermanager.h:1300
void deallocateLogger(Logger *logger)
const RuleSet & ruleSet() const
Definition ball_loggermanager.h:2743
Definition ball_loggermanager.h:1010
int numRecordsInUse() const
Definition ball_loggermanager.h:2372
void logMessage(const Category &category, int severity, Record *record)
LoggerManagerConfiguration::UserFieldsPopulatorCallback UserFieldsPopulatorCallback
Definition ball_loggermanager.h:1019
void removeAll()
Remove all log records from the record buffer of this logger.
Definition ball_loggermanager.h:2359
bsl::function< void(Transmission::Cause)> PublishAllTriggerCallback
Definition ball_loggermanager.h:1024
void logMessage(const Category &category, int severity, const bsl::string_view &fileName, int lineNumber, const bsl::string_view &message)
char * obtainMessageBuffer(bslmt::Mutex **mutex, int *bufferSize)
char * messageBuffer()
Definition ball_loggermanager.h:2346
void publish()
Definition ball_loggermanager.h:2353
int messageBufferSize() const
Definition ball_loggermanager.h:2366
Record * getRecord(const bsl::string_view &fileName, int lineNumber)
bslma::ManagedPtr< char > obtainMessageBuffer(int *bufferSize)
Definition ball_observer.h:235
Definition ball_recordbuffer.h:288
virtual void removeAll()=0
Definition ball_record.h:176
Definition ball_ruleset.h:151
Definition ball_rule.h:177
Definition ball_thresholdaggregate.h:101
Definition bdlcc_objectpool.h:462
Definition bdlcc_sharedobjectpool.h:369
Definition bdlma_concurrentpool.h:332
Definition bslstl_stringview.h:471
Definition bslstl_map.h:653
Definition bslstl_set.h:691
Definition bslstl_sharedptr.h:1838
element_type * get() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_sharedptr.h:5665
Definition bslma_allocator.h:545
Definition bslma_managedptr.h:1173
Definition bslmt_mutex.h:317
Definition bslmt_readerwritermutex.h:244
Definition bsls_atomic.h:1050
unsigned int loadAcquire() const
Definition bsls_atomic.h:2100
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition ball_administration.h:214
bsl::function< void(bsl::string *buffer, const char *categoryName)> NameFilter
Definition ball_categorycallbacks.h:173
Cause
Definition ball_transmission.h:215
@ e_MANUAL_PUBLISH
Definition ball_transmission.h:219
@ e_MANUAL_PUBLISH_ALL
Definition ball_transmission.h:220
bsl::function< void(void *, bslma::Allocator *)> DefaultCreator
Definition bdlcc_objectpool.h:421