/** Construct a new CleanHandler. */ public CleanHandler() { setFormatter(new CleanFormatter()); }
/** Return a concise string that can be added as a timestamp to filenames @param date Time in milliseconds since 1970 @return String in format TIMESTAMP_FORMAT. */ private static String getTimeStamp(long date) { return getTimeStamp(new Date(date)); }
@Override public synchronized String format(LogRecord record) { String message = formatMessage(record); if (message == null) return null; if (message.length() == 0) return message; message = prependToLines(s_prefix+level+": ", message); } else { message = s_prefix+message; message = prependToLines(level+": ", message); if (!lastLevel.equals(Level.SEVERE)) { message = s_prefix + "**** SEVERE WARNING **** ("+ record.getSourceClassName()+ "." + record.getSourceMethodName()+" "+ getTimeStamp(record.getMillis())+" "+ "#" + record.getThreadID() + ")"+NL+ message; int index = shortPackage.lastIndexOf('.'); if (index>0) shortPackage = shortPackage.substring(index+1); message = prependToLines (level+" "+shortPackage+": ", message); } else { message = prependToLines (level+ " " + s_time_formatter.format(new Date()) + " "+ record.getLoggerName()+": ",
/** Unit tests */ public void testFormatter() { CleanHandler.setDefaultHandler(); Logger logger = Logger.getLogger("edu.mines.jtk.util.CleanFormatter"); CleanFormatter cf = new CleanFormatter(); String[] messages = new String[] {"one", "two", "three"}; Level[] levels = new Level[] {Level.INFO, Level.WARNING, Level.SEVERE}; String[] s = new String[3]; for (int i=0; i<messages.length; ++i) { LogRecord lr = new LogRecord(levels[i], messages[i]); lr.setSourceClassName("Class"); lr.setSourceMethodName("method"); s[i] = cf.format(lr); assertTrue(s[i].endsWith(messages[i]+NL)); logger.fine("|"+s[i]+"|"); } assert s[0].equals("one"+NL): s[0]; assert s[1].equals("WARNING: two"+NL) : s[1]; assert s[2].matches("^\\*\\*\\*\\* SEVERE WARNING \\*\\*\\*\\* "+ "\\(Class.method \\d+-\\d+ #.*\\)"+NL+ "SEVERE: three"+NL+"$") :s[2]; }
/** Test prependToLines method */ public void testPrepend() { String lines = CleanFormatter.prependToLines("a","bbb"+NL+"ccc"); assert (lines.equals("abbb"+NL+"accc")); }