Waffle was designed to provide easy monitoring of every aspect of its functionality. The Monitor Pattern has been adopted to allow the use to be notified of the relevant events. Each major area of functionaliy has a corresponding Monitor interface which defines events:
Waffle provides an abstract implementation of all the monitor interfaces in org.codehaus.waffle.monitor.AbstractWritingMonitor and three concrete implementations: org.codehaus.waffle.monitor.CommonsLoggingMonitor (which delegates to Commons Logging), org.codehaus.waffle.monitor.ConsoleMonitor (which writes to console) and org.codehaus.waffle.monitor.SilentMonitor (which writes nothing).
org.codehaus.waffle.monitor.AbstractWritingMonitor defines a default org.codehaus.waffle.monitor.Monitor.Level for each event and a default message template, which can be overridden via the monitorLevels() and monitorMessages() methods. By convention, the levels and templates are held in maps keyed on the event name: