That's not actually quite the case.
You can easily override built-in classes, provided they're controlled by ColdSpring:
1) Go to /ModelGlue 3/ModelGlue/gesture/configuration/ModelGlueConfiguration.xml and find the block that defines modelglue.logWriter and modelglue.logRenderer:
<!--
Renderer that renders the ModelGlue Log.
-->
<bean id="modelglue.logRenderer" class="ModelGlue.gesture.eventrequest.log.LogRenderer" />
<!--
Writer that writes the that renders the ModelGlue Log.
-->
<bean id="modelglue.logWriter" class="ModelGlue.gesture.eventrequest.log.LogWriter" />
2) Go to your application's config/ColdSpring.xml and add bean tags with an ID of modelglue.logWriter and modelglue.logRenderer, but with class="" attributes that point to a location of your choice.
3) At the location of your choice from step 3, create 2 new classes, LogWriter and LogRenderer each of which extend the existing LogWriter and LogRenderer classes.
4) It's nice to start by copy/pasting the code from the 2 existing classes, then modify to suit your needs.
As far as I remember, the framework itself creates an instance of ColdSpring for the application, but that gets used as a parent bean factory another instance of ColdSpring created later in the loading process (I may be way off on that though). Failing that, the config files are all just merged and in that case the last one loaded wins. Either way, your new implementation of the logger and renderer will win and do as you told them to.
I used this technique to create a logging bean populator to see what was going on when I was having some issues with makeEventBean()... it works _s.l.i.c.k_...
J
PS - This power-user techinique is a major argument for CFC-based, configuration-based frameworks... MG in particular since it's backed up entirely by ColdSpring.
In /ModelGlue/config/ColdSpring.xml