private void log(String message,String level,String levelColor,PrintStream ps){
  StringBuilder builder=new StringBuilder();
  if (!level.equals("raw"))   builder.append(getPrefix(level,levelColor));
  builder.append(message);
  String ts=builder.toString();
  ps.println(ts);
  for (  LogHandler hand : handlers)   hand.onLog(level,message,ts,this);
}

private void log ( String message , String level , String levelColor , PrintStream ps ) { StringBuilder builder = new StringBuilder ( ) ; if ( ! level . equals ( "raw" ) ) builder . append ( getPrefix ( level , levelColor ) ) ; builder . append ( message ) ; String ts = builder . toString ( ) ; ps . println ( ts ) ; for ( LogHandler hand : handlers ) hand . onLog ( level , message , ts , this ) ; }
log a new message on the selected printstream with the given method and level . this is where all other ' log ' type methods in this class delegate to .
