code: public void logp(Level level, String sourceClass, String sourceMethod,
  		String msg, Object params[]) 
  	{
  			//PK86423 Start
  			//int lastParam = params.length-1;
  			//if(params.length>0 && params[lastParam] instanceof Throwable){
  			//	params[lastParam]=throwableToString((Throwable) params[lastParam]);
  			//}
  			if(params!=null && params.length>0 && params[params.length-1] instanceof Throwable){
  				params[params.length-1]=throwableToString((Throwable) params[params.length-1]);
  			}
  			//PK86423 End
  			delegateLogger.logp(level,sourceClass,sourceMethod,msg,params);
  	}
docs: If last object in argument is a throwable, then the full stack trace is used to replace the throwable.
  This is because Throwable.toString() method would only output the title of the exception.
  Then the parent Logger.logp() method is called.