The problem with logging is that it tells you what broke but not how you got there. TRACE level logging provides low-level diags but has too much overhead for you to want to have it on in production.
Enter: HOWL Trace
What this does is provide a way of capturing trace level detail into a thread-local ring buffer with very little overhead (i.e. rules say you should not do any object creation or string operations). Most of the time this data just gets thrown away but should some interesting event happen then the data from the ring-buffer gets formatted and logged along with the event.
Hopefully the ring-buffer contains enough history that you can work out how you got to the point of failure.
Think of the classic NPE - you know from the stacktrace which variable is null but to fix the bug you need to find out why the method that was supposed to initialize it was never called.
This is a different model from util.logging, log4j or clogging but similar to those used on mainframes (initial concept came from the Bull guys). It is not the same as buffered logging in log4j as it relies on being able to save the inital trace entries with very little overhead so the buffer sits in front of the logging framework whereas in log4j buffered logging keeps the normal API but just optimizes away output operations.
Anyway, just refloating the idea if anyone is interested. -- Jeremy
