1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.invoker;
20
21 import java.io.PrintStream;
22 import java.io.PrintWriter;
23 import java.io.StringWriter;
24
25
26
27
28
29
30 public class PrintStreamLogger implements InvokerLogger {
31
32
33
34
35 private PrintStream out;
36
37
38
39
40 private int threshold;
41
42
43
44
45 public PrintStreamLogger() {
46 this(System.out, INFO);
47 }
48
49
50
51
52
53
54
55 public PrintStreamLogger(PrintStream out, int threshold) {
56 if (out == null) {
57 throw new NullPointerException("missing output stream");
58 }
59 this.out = out;
60 setThreshold(threshold);
61 }
62
63
64
65
66
67
68
69
70 private void log(int level, String message, Throwable error) {
71 if (level > threshold) {
72
73 return;
74 }
75
76 if (message == null && error == null) {
77
78 return;
79 }
80
81 StringBuilder buffer = new StringBuilder();
82
83 switch (level) {
84 case (DEBUG):
85 buffer.append("[DEBUG]");
86 break;
87
88 case (INFO):
89 buffer.append("[INFO]");
90 break;
91
92 case (WARN):
93 buffer.append("[WARN]");
94 break;
95
96 case (ERROR):
97 buffer.append("[ERROR]");
98 break;
99
100 case (FATAL):
101 buffer.append("[FATAL]");
102 break;
103
104 default:
105 }
106
107 buffer.append(' ');
108
109 if (message != null) {
110 buffer.append(message);
111 }
112
113 if (error != null) {
114 StringWriter writer = new StringWriter();
115 PrintWriter pWriter = new PrintWriter(writer);
116
117 error.printStackTrace(pWriter);
118
119 if (message != null) {
120 buffer.append('\n');
121 }
122
123 buffer.append("Error:\n");
124 buffer.append(writer.toString());
125 }
126
127 out.println(buffer.toString());
128 }
129
130
131 public void debug(String message) {
132 log(DEBUG, message, null);
133 }
134
135
136 public void debug(String message, Throwable throwable) {
137 log(DEBUG, message, throwable);
138 }
139
140
141 public void info(String message) {
142 log(INFO, message, null);
143 }
144
145
146 public void info(String message, Throwable throwable) {
147 log(INFO, message, throwable);
148 }
149
150
151 public void warn(String message) {
152 log(WARN, message, null);
153 }
154
155
156 public void warn(String message, Throwable throwable) {
157 log(WARN, message, throwable);
158 }
159
160
161 public void error(String message) {
162 log(ERROR, message, null);
163 }
164
165
166 public void error(String message, Throwable throwable) {
167 log(ERROR, message, throwable);
168 }
169
170
171 public void fatalError(String message) {
172 log(FATAL, message, null);
173 }
174
175
176 public void fatalError(String message, Throwable throwable) {
177 log(FATAL, message, throwable);
178 }
179
180
181
182
183
184
185 public boolean isDebugEnabled() {
186 return threshold >= DEBUG;
187 }
188
189
190
191
192
193
194 public boolean isErrorEnabled() {
195 return threshold >= ERROR;
196 }
197
198
199
200
201
202
203 public boolean isFatalErrorEnabled() {
204 return threshold >= FATAL;
205 }
206
207
208
209
210
211
212 public boolean isInfoEnabled() {
213 return threshold >= INFO;
214 }
215
216
217
218
219
220
221 public boolean isWarnEnabled() {
222 return threshold >= WARN;
223 }
224
225
226
227
228
229
230 public int getThreshold() {
231 return threshold;
232 }
233
234
235 public void setThreshold(int threshold) {
236 this.threshold = threshold;
237 }
238 }