Last modified 8 years ago Last modified on 01.02.2011 14:26:26

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.


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.

/fawkes/bblogger/scenariostringCurrent logging scenarioqatest*
/fawkes/bblogger/generate_replay_configboolAutomatically create a configuration for replay? (currently not implemented)true*
/fawkes/bblogger/<SCENARIO>/bufferingboolEnable buffering for this scenario?true
/fawkes/bblogger/<SCENARIO>/flushingboolFlush file stream after each chunk? Can severely influence performance, but when enabled allows real-time log watching.false
/fawkes/bblogger/<SCENARIO>/logdirstringPath to directory where to create log files.LOGDIR (compile-time)
/fawkes/bblogger/<SCENARIO>/interfaces/*stringInterface UID to monitor, any number of those entries can exist, replace * with a name each time*


BlackBoard Interfaces

SwitchInterface BBLogger
Interface to temporarily disable logging without unloading the plugin.


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.