001    package calhoun.util;
002    
003    
004    import java.io.PrintWriter;
005    import java.io.StringWriter;
006    import java.text.SimpleDateFormat;
007    import java.util.Date;
008    import java.util.logging.Formatter;
009    import java.util.logging.LogRecord;
010    
011    /** Simpler formatter than the default Java SimpleFormatter.  Only displays time and file.
012     */
013    public class SimplerFormatter extends Formatter {
014    
015            static SimpleDateFormat f = new SimpleDateFormat("HH:mm:ss");
016            static String blanks="       ";
017    
018            /** Just prints a time followed by message followed by class function line
019             */
020            @Override
021            public String format(LogRecord rec) {
022                    String l= rec.getLevel().getName();
023                    String err = "";
024                    Throwable t = rec.getThrown();
025                    if(t != null) {
026                            err = t.getMessage() + ": "+printStackTrace(t);
027                    }
028                    return f.format(new Date(rec.getMillis()))+blanks.substring(0, 7-l.length())
029                    +l+" "+rec.getLoggerName()+"."+rec.getSourceMethodName()+" - "+rec.getMessage()+"\n"+err;
030            }
031    
032            private String printStackTrace(Throwable t) {
033                    StringWriter sw = new StringWriter();
034                    t.printStackTrace(new PrintWriter(sw, true));
035                    return sw.toString().replaceAll("\\p{Blank}*at org.python.core.*\n", "");
036            }
037    }