My favorites | Sign in
Project Logo
                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package able.util;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;

public class StandardFormatter extends Formatter {
private static final int CLASS_LENGTH = 20;

public String format(LogRecord record) {
try {
StringBuilder sb = new StringBuilder();

String level = "UNKN";
if (record.getLevel().equals(Level.WARNING)) {
level = "WARN";
} else if (record.getLevel().equals(Level.SEVERE)) {
level = "SEVR";
} else if (record.getLevel().equals(Level.INFO)) {
level = "INFO";
} else if (record.getLevel().equals(Level.FINE)) {
level = "FINE";
} else if (record.getLevel().equals(Level.FINEST)) {
level = "FNST";
} else if (record.getLevel().equals(Level.FINER)) {
level = "FINR";
} else if (record.getLevel().equals(Level.CONFIG)) {
level = "CONF";
} else if (record.getLevel().equals(Level.OFF)) {
level = "OFF ";
} else if (record.getLevel().equals(Level.ALL)) {
level = "ALL ";
}

sb.append(level).append(" ");

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd HH:mm:ss");
sb.append(sdf.format(new Date(record.getMillis()))).append(" ");


String className = record.getLoggerName();
int classNameLength = className.length();
int before = sb.length();
if (classNameLength > CLASS_LENGTH) {
int index = -1;
while (true) {
sb.append(className.charAt(index + 1));

int oldIndex = index;
index = className.indexOf(".", index + 1);

if (index == -1) {
String str = className.substring(oldIndex + 2);
int rem = CLASS_LENGTH - (sb.length() - before);

if (str.length() > rem) {
str = str.substring(0, rem - 1) + '~';
}

sb.append(str);

break;
} else {
sb.append('.');
}
}
} else {
sb.append(className);
}
int after = sb.length();

for (int i = (after - before); i <= CLASS_LENGTH - 1; i++) {
sb.append(' ');
}

sb.append(" - ");
if (record.getParameters() != null && record.getParameters().length > 0) {
java.util.Formatter formatter = new java.util.Formatter(sb);
formatter.format(record.getMessage(), record.getParameters());
formatter.format("\n");
} else {
sb.append(record.getMessage()).append("\n");
}

if (record.getThrown() != null) {
StringWriter sw = new StringWriter();
record.getThrown().printStackTrace(new PrintWriter(sw));
sb.append(sw.toString());
}

return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return record.getMessage();
}
}
}
Show details Hide details

Change log

r6 by plightbo on Nov 05, 2008   Diff
more refactoring
Go to: 
Project members, sign in to write a code review

Older revisions

r2 by plightbo on Oct 23, 2008   Diff
initial cut of Able
All revisions of this file

File info

Size: 3520 bytes, 101 lines
Hosted by Google Code