package dk.daoas.adressevedligehold.tasks; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Level; import org.apache.commons.lang3.exception.ExceptionUtils; public class TaskLogger { private StringBuilder buffer = new StringBuilder(32*1024);//Reserve 32KB private SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.SSS"); public String getBuffer() { synchronized(buffer) { return buffer.toString(); } } public void reset() { synchronized(buffer) { buffer.setLength(0); } } public void log(Level lvl, String msg) { log("[" + lvl.toString() + "] " + msg); } public void log(Level lvl, String msg, Exception e) { log("[" + lvl.toString() + "] " + msg + "\n" + ExceptionUtils.getStackTrace(e) ); } public void warning(String msg) { log(Level.WARNING, msg); } public void warning(String msg, Exception e) { log(Level.WARNING, msg, e); } public void info(String msg) { log(Level.INFO, msg); } public void fine(String msg) { log(Level.FINE, msg); } private void log(String msg) { String time = getTimeString(); String line = "[" + time + "] " + msg + "\n"; System.out.println(line); synchronized(buffer) { buffer.append(line); } } private String getTimeString() { return format.format( new Date() ); } /* ******************************************************* * Singleton */ private static TaskLogger instance = null; private TaskLogger() { } public static TaskLogger getInstance() { if (instance == null) { instance = new TaskLogger(); } return instance; } }