I fully support a major improvement on the error reporting. This is a real must as currently we are blind to some errors and we also report some errors N>2 times with similar or different error messages. I therefore support strongly the proposal (@Chris: not proposition that has another meaning ;-)
In addition to what Chris proposes, I would propose the following to replace the current mess about the context:
gLogger currently uses the entity name (agent or service) as an prefix. Then depending on the developer either a subLogger is created appending e.g. "/methodName" to the prefix, or "/Module/methodName", or the method name is explicitly printed. In addition for multithreaded/multiprocesses instances, we had to manually add an identifier to the message (for example the plugin name and the threadID in the TS, the request name in the RMS, etc...).
This is a mess and a standard message should be formatted automatically indicating the context. The full stack trace should only be for debug level, but at higher levels the prefix should be automatically set to what one would expect, indicating where we are when logging and where the error did occur.
I am not sure repeating on all lines the name of the entity is worth it, as when looking at a log we know which agent or services we look for. This will save space in the logs!
Therefore the proposed change should be coupled with changes in the gLogger singleton. It could also for exemple set a flag in the DError object when it has already been printed such that it is not printed twice...