Project Report: fawkez

Packagesummary org.jcoderz.phoenix.cmpgen2

org.jcoderz.phoenix.cmpgen2.LogFormatter

LineHitsNoteSource
1  /*
2   * $Id: LogFormatter.java 1011 2008-06-16 17:57:36Z amandel $
3   *
4   * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5   *
6   * Redistribution and use in source and binary forms, with or without
7   * modification, are permitted provided that the following conditions are
8   * met:
9   *
10   *    * Redistributions of source code must retain the above copyright
11   *      notice, this list of conditions and the following disclaimer.
12   *    * Redistributions in binary form must reproduce the above
13   *      copyright notice, this list of conditions and the following
14   *      disclaimer in the documentation and/or other materials
15   *      provided with the distribution.
16   *    * Neither the name of the jCoderZ.org Project nor the names of
17   *      its contributors may be used to endorse or promote products
18   *      derived from this software without specific prior written
19   *      permission.
20   *
21   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30   * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   */
33  package org.jcoderz.phoenix.cmpgen2;
34  
35  import java.io.PrintWriter;
36  import java.io.StringWriter;
37  import java.text.SimpleDateFormat;
38  import java.util.Date;
39  import java.util.logging.Formatter;
40  import java.util.logging.LogRecord;
41  
42  /**
43   * @author Albrecht Messner
44   */
450 public class LogFormatter
46     extends Formatter
47  {
480    private static SimpleDateFormat sDateFormat =
49 (1)      new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss");
50  
51     private static final int MAX_METHOD_LENGTH = 25;
52  
53     /** {@inheritDoc} */
54     public final String format (LogRecord record)
55     {
560(2)      final String date = sDateFormat.format(new Date());
570       final StringBuffer sbuf = new StringBuffer();
580       sbuf.append(date).append(' ');
59        // sbuf.append(Thread.currentThread().getName()).append(' ');
600       sbuf.append(padSourceMethod(record.getSourceMethodName())).append(' ');
610       sbuf.append(record.getLevel()).append(' ');
620       sbuf.append(formatMessage(record));
630       if (record.getThrown() != null)
64        {
650          final StringWriter sw = new StringWriter();
660          final PrintWriter pw = new PrintWriter(sw);
670          record.getThrown().printStackTrace(pw);
680          pw.flush();
690          sbuf.append('\n').append(sw.getBuffer().toString());
70        }
710       sbuf.append('\n');
720       return sbuf.toString();
73     }
74  
75     private String padSourceMethod (String sourceMethod)
76     {
77        final String result;
780       if (sourceMethod.length() > MAX_METHOD_LENGTH)
79        {
800           result = sourceMethod.substring(0, MAX_METHOD_LENGTH);
81        }
82        else
83        {
840          final StringBuffer sbuf = new StringBuffer();
850          sbuf.append(sourceMethod);
86           {
870             for (int i = 0; i < (MAX_METHOD_LENGTH - sourceMethod.length());
880                 i++)
89              {
900                sbuf.append(' ');
91              }
92           }
930          result = sbuf.toString();
94        }
950       return result;
96     }
97  }

Findings in this File

c (1) 49 : 7 When instantiating a SimpleDateFormat object, specify a Locale
w (2) 56 : 27 Static DateFormatter objects should be accessed in a synchronized manner