View Javadoc

1   package org.lcsim.util.log;
2   
3   import java.io.PrintWriter;
4   import java.io.StringWriter;
5   import java.util.Date;
6   import java.util.logging.Formatter;
7   import java.util.logging.LogRecord;
8   
9   /**
10   * <p>
11   * The default log formatter for logging in LCSim, primarily from Driver classes.
12   * <p>
13   * This will display log messages in the following format:<br/>
14   * <pre>date | loggerName | methodName | level | message
15   * exception traceback (if exists)</pre>
16   * <p>
17   * The 
18   * 
19   * @author Jeremy McCormick <jeremym@slac.stanford.edu>
20   *
21   */
22  public class DefaultLogFormatter extends Formatter {
23         
24      public DefaultLogFormatter() {        
25      }
26            
27      public String format(LogRecord record) {
28          StringBuilder sb = new StringBuilder();
29          
30          // Append the header.
31          sb.append(new Date(record.getMillis()) + " " +
32                  record.getLoggerName() + " " + 
33                  record.getSourceMethodName() + '\n'); 
34  
35          // Append the level and message.
36          sb.append(record.getLevel().getLocalizedName() + ": " + formatMessage(record) + '\n');
37          
38          // Append an Exception traceback if applicable.
39          if (record.getThrown() != null) {
40              try {
41                  StringWriter sw = new StringWriter();
42                  PrintWriter pw = new PrintWriter(sw);
43                  record.getThrown().printStackTrace(pw);
44                  pw.close();
45                  sb.append(sw.toString());
46              } catch (Exception ex) {
47              }
48          }        
49          return sb.toString();
50      }    
51  }