The premise of the logging system is that there are a number of Logging sources that produce messages, and a number of logging sinks that consume them.
Sources are simply String identifiers. Messages can be logged without registering the supplied source, but the source will not be able to be manipulated by the GUI without first making a call to .
Sinks are free to handle incoming messages in any way they see fit. Currently there are sinks to print messages to stdout and stderr, to print to a gui console window, and to write messages to a file. Creating a new file sink via the gui is simply a matter of giving the sink a name by adding an element to the /Logging/File Logging Sinks list, and then using the newly-appeared configurator panel to choose which file is written to, what level of detail is present, etc.
When a message is logged with a particular source, the message is duplicated and passed to all of the sinks associated with that source. This association can be made programatically, with a call to , or through the GUI, by adding the name of the source to the list of associated sources in the sink's configuration panel.
As the Logging system uses the Configurator system, it's state is saved in the same way as the rest of the simulator's.