Blackboard Logging Plugin
Log data written to the blackboard to plain files which can later be replayed by the bblogreplay? plugin. The data is written to a custom binary formed file. It can be viewed and converted, e.g. to comma-separated values, with the ffbblog? tool. The general intention is to store experiment data, and analyze it later, most often by replaying it to the blackboard.
Each interface is handled by its own thread. The plugin will spawn as many threads as there are interfaces to log. This allows for maximum concurrency of the writers and avoids a serialization bottle neck. The log thread can operate in buffering mode. If this mode is disabled, the data is written to the file within the blackboard data changed event, and thus the writing operation can slow down the overall system, but memory requirements are low. This is useful if a lot of data is written or if the storage device is slow. If the buffering mode is enabled, the data will be copied into another memory segment during the event and the thread will be woken up. Once the thread is running it stores all of the BB data segments buffered up to then.
Requires
BlackBoard Interfaces
No particular interface is required, but all that exist can be logged.
Config Values
Multiple scenarios can be configured, which allows to quickly change the set of interfaces to log. Each scenario defines a set of interface unique identifiers which is then logged, each by it's own thread.
| Path | Type | Description | Default | R |
| /fawkes/bblogger/scenario | string | Current logging scenario | qatest | * |
| /fawkes/bblogger/generate_replay_config | bool | Automatically create a configuration for replay? (currently not implemented) | true | * |
| /fawkes/bblogger/<SCENARIO>/buffering | bool | Enable buffering for this scenario? | true | |
| /fawkes/bblogger/<SCENARIO>/flushing | bool | Flush file stream after each chunk? Can severely influence performance, but when enabled allows real-time log watching. | false | |
| /fawkes/bblogger/<SCENARIO>/logdir | string | Path to directory where to create log files. | LOGDIR (compile-time) | |
| /fawkes/bblogger/<SCENARIO>/interfaces/* | string | Interface UID to monitor, any number of those entries can exist, replace * with a name each time | * | |
Provides
BlackBoard Interfaces
- SwitchInterface BBLogger
- Interface to temporarily disable logging without unloading the plugin.
Other
Log files of the logged data.
Usage Instructions
First create a logging scenario. For this choose a name, e.g. myscenario. Then create entries for each interfaces to log, e.g. /fawkes/bblogger/myscenario/interfaces/ballpos with the value ObjectPositionInterface::WM Ball. optionally set buffering, flushing, and logdir scenario parameters. Finally set /fawkes/bblogger/scenario to your scenario name, myscenario in our case. Afterwards load the bblogger plugin. It will enable logging right away, which can be toggled via the SwitchInterface::BBLogger.
Read about ffbblog? to see how to view or convert log files.

