public void logException(LogLevel logLevel, Throwable throwable, Class clazz, String methodName) {
    Date timeStamp = new Date();
    char border[] = new char[logLevel.toString().length() + 4];
    Arrays.fill(border, '*');

    String message;
    if (throwable.getMessage() != null) {
      message = throwable.getMessage().trim();
      message = message.replace(System.getProperty("line.separator"), " => ");
    }
    else {
      message = "No message.";
    }

    synchronized (this.syncObject) {
      this.tracePrintStream.println(border);
      this.tracePrintStream.printf("* %s *  [%tc] [%d,%s] [%s] [%s] \"%s\"%n", logLevel.toString(), timeStamp, Thread.currentThread().getId(), 
          Thread.currentThread().getName(), clazz.getName(), methodName, message);
      this.tracePrintStream.println(border);
      throwable.printStackTrace(this.tracePrintStream);
    }
  }
public void logException ( LogLevel logLevel , Throwable throwable , Class clazz , String methodName ) { Date timeStamp = new Date ( ) ; char border [ ] = new char [ logLevel . toString ( ) . length ( ) + 4 ] ; Arrays . fill ( border , '*' ) ; String message ; if ( throwable . getMessage ( ) != null ) { message = throwable . getMessage ( ) . trim ( ) ; message = message . replace ( System . getProperty ( "line.separator" ) , " => " ) ; } else { message = "No message." ; } synchronized ( this . syncObject ) { this . tracePrintStream . println ( border ) ; this . tracePrintStream . printf ( "* %s *  [%tc] [%d,%s] [%s] [%s] \"%s\"%n" , logLevel . toString ( ) , timeStamp , Thread . currentThread ( ) . getId ( ) , Thread . currentThread ( ) . getName ( ) , clazz . getName ( ) , methodName , message ) ; this . tracePrintStream . println ( border ) ; throwable . printStackTrace ( this . tracePrintStream ) ; } }
Logs an exception with the given logLevel and the originating class.

@param logLevel one of the predefined levels INFO, WARNING, ERROR, FATAL and SEVERE
@param throwable the to be logged throwable
@param clazz the originating class
@param methodName the name of the relevant method