1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.cosylab.logging;
21
22 import java.io.PrintWriter;
23 import java.io.StringWriter;
24
25 import java.text.SimpleDateFormat;
26
27 import java.util.Date;
28 import java.util.logging.Formatter;
29 import java.util.logging.LogRecord;
30
31
32
33
34
35
36
37
38 public class ConsoleLogFormatter extends Formatter
39 {
40
41 public static String KEY_TRACE = "TRACE";
42
43
44 private static boolean showTrace = System.getProperties().containsKey(KEY_TRACE);
45
46
47 private static String lineSeparator = System.getProperty("line.separator");
48
49
50 private SimpleDateFormat timeFormatter = new SimpleDateFormat(
51 "yyyy-MM-dd'T'HH:mm:ss.SSS");
52
53
54 private Date date = new Date();
55
56
57
58
59
60
61
62
63 public String format(LogRecord record)
64 {
65 StringBuffer sb = new StringBuffer(128);
66
67 synchronized (date) {
68 date.setTime(record.getMillis());
69
70
71 sb.append(timeFormatter.format(date));
72
73
74 }
75
76
77
78
79
80
81
82
83
84
85 if (record.getLoggerName() != null
86 || record.getSourceClassName() != null
87 || record.getSourceMethodName() != null) {
88 sb.append(' ');
89 sb.append('[');
90
91 if (record.getLoggerName() != null) {
92 sb.append(record.getLoggerName());
93
94 if (record.getSourceClassName() != null) {
95 sb.append(':');
96 }
97 }
98
99 if (record.getSourceClassName() != null) {
100 sb.append(record.getSourceClassName().substring(record.getSourceClassName()
101 .lastIndexOf('.') + 1));
102 }
103
104 sb.append('#');
105
106 if (record.getSourceMethodName() != null) {
107 sb.append(record.getSourceMethodName());
108 }
109
110 sb.append(']');
111 }
112
113 sb.append(' ');
114 sb.append(record.getMessage());
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 sb.append(lineSeparator);
135
136
137 if (showTrace) {
138 if (record.getThrown() != null) {
139 try {
140 StringWriter sw = new StringWriter();
141 PrintWriter pw = new PrintWriter(sw);
142 record.getThrown().printStackTrace(pw);
143 pw.close();
144 sb.append(sw.toString());
145 } catch (Exception ex) {
146 }
147
148
149 }
150 }
151
152 return new String(sb);
153 }
154 }
155
156