Execution Tracing Package Architecture
The Execution Tracing package consists of two parts, the trace macros and the trace classes. The trace macros include:
*set declaration macros, used to declare functions as traceable and group them into class and package sets, which are toggled at runtime to determine which functions produce trace output.
*event generation macros, used to generate the trace events at the different severity levels with your trace messages
The trace classes include:
*the trace manager, a global singleton object that accepts trace events generated by the event generation macros and forwards them to the connected trace client
* trace clients, which receive trace events and process them (for example, writing the message to an ostream)
*optional trace filters, specialized clients that receive trace events and selectively forward the events to other clients, based on some criteria like the severity level
Only one client can connect directly to the trace manager. In cases where different categories of trace output must be treated differently, or some categories must be handled in multiple ways, a multi-client filter (splitter) is provided.