code: public synchronized void error(LogWriter source, String msg, Exception e)
  	{
  		if (invocations >= maxInvocations)
  			return;
  		++invocations;
  
  		String out = source + ": " + msg;
  		StackTraceElement[] trace = null;
  		if (e != null) {
  			out += " (" + e.getMessage() + ")";
  			trace = e.getStackTrace();
  		}
  		synchronized (System.err) {
  			System.err.println(out);
  			final String srcName = source.getClass().getName();
  			if (trace != null)
  				for (int i = 0; i < trace.length; ++i) {
  					System.err.println("\t- " + trace[i]);
  					if (trace[i].getClassName().equals(srcName))
  						break;
  				}
  		}
  	}
docs: Invoked on a log writer error event.
  <p>
  The default behavior used here prints the logging source and the error message to
  the system standard error stream (System.err). If an exception object is given, the
  exception and the last method calls of the log writer leading to the error are also
  printed.<br>
  Only predefined maximum invocations are handled, subsequent calls are ignored.
  
  @param source the log writer the error originated from
  @param msg message describing the error
  @param e exception related to the error, may be <code>null</code>