1 17 18 package com.finalist.util.log; 19 20 import java.text.SimpleDateFormat ; 21 import java.util.Date ; 22 import java.util.logging.Formatter ; 23 import java.util.logging.LogRecord ; 24 25 30 public final class LogFormatter extends Formatter { 31 32 33 private SimpleDateFormat dateFormatter; 34 35 40 private int showNumberOfLastPackages; 41 42 43 private String messageSeparator; 44 45 46 52 public LogFormatter(int showNumberOfLastPackages, String datePattern, String messageSeparator) { 53 this.dateFormatter = new SimpleDateFormat (datePattern); 54 this.messageSeparator = messageSeparator; 55 this.showNumberOfLastPackages = showNumberOfLastPackages; 56 } 57 58 59 65 public String format(LogRecord rec) { 66 StringBuffer buf = new StringBuffer (1000); 67 StringBuffer packageClass = new StringBuffer (50); 68 String loggerName = rec.getLoggerName(); 69 70 if (this.showNumberOfLastPackages <= 0) { 71 packageClass.append(loggerName); 72 } 73 74 for (int i = 0; i < this.showNumberOfLastPackages; i++) { 75 int index = loggerName.lastIndexOf("."); 76 77 if (index > -1) { 78 packageClass.insert(0, loggerName.substring(index, loggerName.length())); 79 loggerName = loggerName.substring(0, index); 80 } 81 else { 82 packageClass.insert(0, loggerName); 83 break; 84 } 85 } 86 if (packageClass.charAt(0) == '.') { 87 packageClass.deleteCharAt(0); 88 } 89 92 buf.append(rec.getLevel()); 93 buf.append(" "); 94 buf.delete(8, buf.length()); 95 buf.insert(8, dateFormatter.format(new Date (rec.getMillis()))); 96 buf.append(" "); 97 buf.append(packageClass); 98 buf.append(" "); 99 buf.append(this.messageSeparator); 100 buf.append(" "); 101 buf.append(formatMessage(rec)); 102 buf.append((rec.getThrown() != null) ? rec.getThrown().toString() : ""); 103 buf.append('\n'); 104 return buf.toString(); 105 } 106 } | Popular Tags |