In order to send a log message, a component must create a LogEvent
object, then broadcast that object to all LogListener
objects attached to the component.
This operation is best placed in a method that can be called quickly. For example, the following implementation includes such convenience methods:
Vector mLogListeners; public synchronized void addLogListener (LogListener pListener){ if (mLogListeners == null) mLogListeners = new Vector (); mLogListeners.addElement (pListener); } public synchronized void removeLogListener (LogListener pListener){ if (mLogListeners != null) mLogListeners.removeElement (pListener); } public int getLogListenerCount (){ return (mLogListeners == null) ? 0 : mLogListeners.size (); } public synchronized void sendLogEvent (LogEvent pLogEvent){ if (mLogListeners != null) { int len = mLogListeners.size (); for (int i = 0; i < len; i++) { ((LogListener) mLogListeners.elementAt (i)).logEvent (pLogEvent); } } } public void logError (String pMessage){ logError (pMessage, null); } public void logError (Throwable pThrowable){ logError (null, pThrowable); } public void logError (String pMessage, Throwable pThrowable){ sendLogEvent (new ErrorLogEvent (pMessage, pThrowable)); }
With these methods available, the component can now send error events like this:
// Log an error if (isLoggingError ()) { logError ("Look out, it's gonna blow!"); }