package de.mrbesen.youtubecrawler; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Layout; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.spi.LoggingEvent; public class Log { public static Logger l = Logger.getRootLogger(); public Log() { l.setLevel(Level.ALL); ConsoleAppender consoleAppender = new ConsoleAppender( new Layout() { @Override public void activateOptions() { } @Override public boolean ignoresThrowable() { return false; } @Override public String format(LoggingEvent e) { String classname = e.getLoggerName(); classname = classname.substring(classname.lastIndexOf('.')+1); String out = "["+ format(e.getThreadName(), 10) + "|" + format(classname, 10) + "|" + format(e.getLevel().toString(),3) + "] "; if (e.getThrowableInformation() != null) { out += e.getMessage() + "\n" + logException(e.getThrowableInformation().getThrowable(), out); } else { out += e.getMessage(); } return( out + '\n'); } private String logException(Throwable t, String prefix) { StringBuilder errortext = new StringBuilder(); errortext.append(prefix).append(t.toString()); for(StackTraceElement err : t.getStackTrace()) { errortext.append('\n').append(prefix).append(' ').append(err.toString()); } if(t.getCause() != null) { errortext.append("\n" + prefix +" Caused by: \n").append(logException(t.getCause(), prefix + " ")); } return errortext.toString(); } private String format(String in, int length) { while(in.length() < length) { in += ' '; } if(in.length() > length) { in = in.substring(0, length); } return in; } } ); l.addAppender( consoleAppender ); } }