RACE - Modifications and Extensions to ACE from Ravensburg
RACE-Error-Logging
Benefits:
- Abstraction of Backend-Mechanisms
- Minimal Critical sections
- Using IO-Stream abstraction
- envdebug: fine granular controlling of Debugging output
Drawbacks:
- Compile-Timeswitching must done with #ifdef
Abstraction of Backend-Mechanism
A class in an library don't know the context in which it will be called.
Thus, in the start phase, the backends have to konkretly initialized.
For instance, the syslog-mechanism needs to know a facility, while stderr don't need this. It cannot be in a large system, that the logging-mechanism
puts the messages only in one predifined facility.
stream-Abstraction
We cannot pass objects of non-POD type `std::string' through `...'. Thus, for
complex objects the << - Operator abstracts where the dumping will be done
Minimal Critical Sections
Important idea of ACE_Log_Msg:
The MessageBuffer is a Thread Specific Singleton in a Thread Specific Storage.
Thus, there is during message assembly no need for koordination.
The whole ostream is a Thread specific Singleton (TSS_Singleton)
Special
- Logging in constructors and destructors in global objects
- When calling the BackendMgr in a global constructor, it don't can
be controlled. The BackendMgr is inizilized with the Stderr-Backend.
Later, the backend may be cleared and new backends can be added.
Computerscience and Networkassocation Ravensburg e.V Rudolf Weber and friends