package com.redhat.qe.auto.selenium; import java.io.PrintWriter; import java.io.StringWriter; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Formatter; import java.util.logging.LogRecord; import com.redhat.qe.auto.testng.LogMessageUtil; /** * A Formatter for java logging, to print nice timestamped * lines to stdout/stderr. * @author jweiss * */ public class ConsoleLogFormatter extends Formatter { private static final DateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm:ss.SSS"); @Override public String format(LogRecord record) { String date = sdf.format(new Date(record.getMillis())); String throwable = ""; String message = record.getMessage(); if (record.getThrown() != null) throwable = throwableToString(record.getThrown()) + "\n"; if (record.getParameters() != null) for (Object param: record.getParameters()){ if (param.equals(LogMessageUtil.Style.Banner)) message = "======= " + message; } return date + " - " + record.getLevel() + ": " + message + " (" + record.getSourceClassName() + "." + record.getSourceMethodName() + ")\n" + throwable; } protected String throwableToString(Throwable t){ StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); return sw.toString(); } }