I should have a side-effecting way to debug complex functions

(User Story, Closed -> Fixed, Priority: Critical, Test Status: Needs Testing , Reported By Justin du Coeur, )
Summary: Right now, it is way too hard to figure out when something has gone weirdly wrong. We need a way to deal with this.
Conceptually, what I'm looking for is good old println(). Likely should be a log() function, that accepts basically anything, renders it, and sends it to some sort of UserSpaceSession-specific log.
As usual, the hard part is UI. We need a way (probably only in Programmer Mode) to open a window showing the log. Initially this might require manual refresh, but it should really be pushed-to. Also, it could initially be in a separate window, but it really ought to be a pane that can be opened below the main window.
A first-cut way to cope, with no UI at all, would be to add a getLog() command, accessible from the Console. Horribly clumsy, but better than nothing.