BDE 3.19.0: Production Release¶
Schedule¶
The BDE team is pleased to announce that the BDE 3.19.0 production release was completed on Tuesday, January 8, 2019
BDE 3.19.0 Highlights¶
New Macro: BALL_LOG_SET_CATEGORY_HIERARCHICALLY
¶
The
ball_log
component now defines an additional macro:BALL_LOG_SET_CATEGORY_HIERARCHICALLY(CATEGORY)where
CATEGORY
is an ASCII string, the name of aball
logging category to be created. The logging levels of the newly created category (i.e., record, pass, trigger, and triggerAll levels) are set equal to those of the existing category in the category registry whose name has the longest prefix match to the specifiedCATEGORY
. If there is no such match the behavior of this new macro produces the same result as theBALL_LOG_SET_CATEGORY
macro (the default logging levels currently set in the logger manager are used).For example:
BALL_LOG_SET_CATEGORY("EXAMPLES")registers a category named
"EXAMPLES"
having the default logging levels (i.e., record, pass, trigger, and triggerAll) currently defined by the logger manager object. However, one can change those logging levels:ball::LoggerManager& manager = ball::LoggerManager::singleton(); const ball::Category *category = manager.lookupCategory("EXAMPLES"); category->setLevels(myRecordLevel, myPassLevel, myTriggerLevel, myTriggerAllLevel);Now, if we create a category using the hierarchical macro:
BALL_LOG_SET_CATEGORY_HIERARCHICALLY("EXAMPLES.EXAMPLE1");the
"EXAMPLES.EXAMPLE1"
category will have logging levels matching those of the"EXAMPLES"
category (i.e.,myRecordLevel
,myPassLevel
,myTriggerLevel
, andmyTriggerAllLevel
) and not the default levels defined in themanager
object.As with
BALL_LOG_SET_CATEGORY
, invocations ofBALL_LOG_SET_CATEGORY_HIERARCHICALLY
on an existing category have no effect.Two other new macros, analogous to the (non-hierarchical)
DYNAMIC
andCLASS
versions of theBALL_LOG_SET_CATEGORY
macro, are also provided:BALL_LOG_SET_DYNAMIC_CATEGORY_HIERARCHICALLY(CATEGORY) BALL_LOG_SET_CLASS_CATEGORY_HIERARCHICALLY(CATEGORY)