Notes on the new Logging API/architecture
For E-Cell 4 we are planning to replace the entire old E-Cell 3 logging mechanism with an entirely new front-end based logging system.
New system
||
Backend (libecs) || Frontend
||
|| +-------------------+
+-------------+ || | |
+--------+ +---------+ | | || | |
| | | | | | || | PyLoggerProxy |
|Variable+<>-------+LoggerCB +------+ LoggerProxy +-----++-----| |
| | | | | | || | |
+--------+ +---------+ | | || | |
+------+------+ || +----------+--------+
| || |
| || |
| || +-----------+--------+
| || | |
<> || | |
+------------+------+ || | Logger |
| | || | |
| ProxyAccumulator | || | |
| | || +--------------------+
+-------------------+ ||
||
||
||
Following the changes to the fundamental classes that will occur during this quarter, the Variable class will end up as a thin wrapper to an ID associated with a PropertySlot.
Loggers will be constructed in the front end by instantiating a Logger class, which will contain the interface for creating and deleting Loggers, as well as changing logging policies. The Logger class will manage an object called LoggerCallback, which is a class that is associated with a particular Variable object, and is called whenever the value associated with that Variable changes.
The Logger objects will also be accumulated in another class, ProxyAccumulator, in order to help in the memory management of these logger objects.
