package org.myrobotlab.logging; import java.io.PrintWriter; import java.io.StringWriter; import org.slf4j.Logger; public abstract class Logging { public final static Logger log = LoggerFactory.getLogger(Logging.class); // performance timing public static long startTimeMilliseconds = 0; public static boolean performanceTiming = false; public final static String logError(final Throwable e) { String ret = stackToString(e); log.error(ret); return ret; } /** * * @param tag */ static public void logTime(String tag) { if (!performanceTiming) { return; } if ("start".equals(tag)) { startTimeMilliseconds = System.currentTimeMillis(); } log.info(String.format("performance clock :%d ms %s", System.currentTimeMillis() - startTimeMilliseconds, tag)); } static public Boolean logTimeEnable(Boolean b) { performanceTiming = b; return performanceTiming; } static public void logTimeStart() { logTime("start"); } public final static String stackToString(final Throwable e) { StringWriter sw; try { sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); e.printStackTrace(pw); } catch (Exception e2) { return "bad stackToString"; } return "------\r\n" + sw.toString() + "------\r\n"; } public abstract void addAppender(Object type); public abstract void addAppender(String type); public abstract void addAppender(String type, String filename); public abstract void configure(); // a basic configuration public abstract String getLevel(); public abstract void removeAllAppenders(); public abstract void removeAppender(Object console); public abstract void removeAppender(String name); public abstract void setLevel(String level); public abstract void setLevel(String clazz, String level); /** * * @param timerName * @param tag */ /* * static public void logTime(String timerName, String tag) { if (timerMap == * null) { timerMap = new HashMap<String, Long>(); } * * if (!timerMap.containsKey(timerName) || "start".equals(tag)) { * timerMap.put(timerName, System.currentTimeMillis()); } * * StringBuffer sb = new StringBuffer(40).append("timer ").append(timerName). * append(" ").append(System.currentTimeMillis() - * timerMap.get(timerName)).append(" ms ") .append(tag); * * log.info(sb.toString()); } */ }