public void throwing(Level level, String className, String methodName, Throwable t)
     throws Throwable {
   if (minLevel.compareTo(level) < 0) {
     log(level, "Throwing " + className + "." + methodName, t);
   }
   throw t;
 }
 public void entering(String className, String method) {
   if (minLevel.compareTo(Level.TRACE) > 0) {
     return;
   }
   log(Level.TRACE, "enter " + className + "." + method + "()");
 }
 public void log(Level level, String message, Throwable t) {
   if (minLevel.compareTo(level) <= 0) {
     log(level, message + "\nException: " + t.getMessage());
     t.printStackTrace();
   }
 }
 public void log(Level level, String message) {
   if (minLevel.compareTo(level) <= 0) {
     System.out.println(format(level, message));
   }
 }