-
Notifications
You must be signed in to change notification settings - Fork 0
/
Log.java
431 lines (389 loc) · 12.3 KB
/
Log.java
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
package io.github.team1810robotics.chargedup.log;
import java.util.Calendar;
public class Log {
/**
* Logs something.
*
* @param level The level of importance of the log message.
* @param message The message being logged.
*/
public static void log(LogLevel level, String message) {
try {
Calendar cal = Calendar.getInstance();
String msg = String.format("[%02d:%02d:%02d.%03d] [%s] %s%n", cal.get(Calendar.HOUR),
cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), cal.get(Calendar.MILLISECOND), level, message);
System.out.printf(msg);
} catch (Throwable t) {
t.printStackTrace();
}
}
/**
* Logs a formatted string.
*
* @param level The level of what is being logged.
* @param format The format of the log statement.
* @param args the arguments for the format string that the log came from.
*/
public static void log(LogLevel level, String format, Object... args) {
log(level, String.format(format, args));
}
/**
* Logs a throwable.
*
* @param level The level of what is being logged.
* @param throwable The throwable being logged.
* @param message The message being logged.
*/
public static void log(LogLevel level, Throwable throwable, String message) {
log(level, message);
log(level, "%s: %s", throwable.getClass().getName(), throwable.getMessage());
for (StackTraceElement element : throwable.getStackTrace()) {
log(level, " at %s", element);
}
if (throwable.getCause() != null) {
log(level, throwable.getCause(), "Caused by:");
}
}
/**
* Logs a throwable formatted with object.
*
* @param level The level of what is being logged.
* @param throwable The throwable being logged.
* @param format The format of what is being logged.
* @param args the arguments for the format string.
*/
public static void log(LogLevel level, Throwable throwable, String format, Object... args) {
log(level, throwable, String.format(format, args));
}
/**
* Logs a throwable.
*
* @param level The level of what is being logged.
* @param throwable The throwable being logged.
*/
public static void log(LogLevel level, Throwable throwable) {
log(level, throwable, "An Unhandled Exception has Occured");
}
/**
* Logs a trace.
*
* @param message The message of what is being traced.
*/
public static void trace(String message) {
log(LogLevel.TRACE, message);
}
/**
* Logs a formatted trace.
*
* @param format The format of what is being logged.
* @param args the arguments for the format string being logged
*/
public static void trace(String format, Object... args) {
log(LogLevel.TRACE, format, args);
}
/**
* Logs a trace with a throwable.
*
* @param throwable The throwable being logged as a trace.
* @param message The message being logged with the trace.
*/
public static void trace(Throwable throwable, String message) {
log(LogLevel.TRACE, throwable, message);
}
/**
* Logs a trace with a throwable and a format.
*
* @param throwable The throwable being logged with a trace.
* @param format The format of logging.
* @param args the arguments for the format string of whats being logged.
*/
public static void trace(Throwable throwable, String format, Object... args) {
log(LogLevel.TRACE, throwable, format, args);
}
/**
* Logs a throwable at trace level.
*
* @param throwable The throwable to be logged.
*/
public static void trace(Throwable throwable) {
log(LogLevel.TRACE, throwable);
}
/**
* Logs something with level of enter (entering a method).
*
* @param method The method that was entered.
*/
public static void enter(String method) {
trace("ENTER %s", method);
}
/**
* Logs something with a level of leave (leaving a method).
*
* @param method The method that is being left.
*/
public static void leave(String method) {
trace("LEAVE %s", method);
}
/**
* Logs something with the level of debug.
*
* @param message The message being logged.
*/
public static void debug(String message) {
log(LogLevel.DEBUG, message);
}
/**
* Logs something formatted with level of importance of debug.
*
* @param format The format of what is being logged.
* @param args the arguments for the format string of the log.
*/
public static void debug(String format, Object... args) {
log(LogLevel.DEBUG, format, args);
}
/**
* Logs a throwable with a message at level of debug.
*
* @param throwable The throwable to log.
* @param message The message to log with the throwable.
*/
public static void debug(Throwable throwable, String message) {
log(LogLevel.DEBUG, throwable, message);
}
/**
* Logs a formatted throwable.
*
* @param throwable The throwable to log.
* @param format The format to log the throwable.
* @param args the arguments for the format string to log with the
* throwable.
*/
public static void debug(Throwable throwable, String format, Object... args) {
log(LogLevel.DEBUG, throwable, format, args);
}
/**
* Logs a throwable with the level of debug
*
* @param throwable The throwable to log
*/
public static void debug(Throwable throwable) {
log(LogLevel.DEBUG, throwable);
}
/**
* Logs a message with the level of info.
*
* @param message The message to log.
*/
public static void info(String message) {
log(LogLevel.INFO, message);
}
/**
* Logs a formatted message with level info.
*
* @param format The format to log the info.
* @param args the arguments for the format string to log the info.
*/
public static void info(String format, Object... args) {
log(LogLevel.INFO, format, args);
}
/**
* Logs a throwable with level of info with a message.
*
* @param throwable The throwable to log.
* @param message The message to log with the throwable.
*/
public static void info(Throwable throwable, String message) {
log(LogLevel.INFO, throwable, message);
}
/**
* Logs a throwable formatted with the level of info.
*
* @param throwable The throwable to log.
* @param format The format to use to log the throwable.
* @param args the arguments for the format string to log with the
* throwable.
*/
public static void info(Throwable throwable, String format, Object... args) {
log(LogLevel.INFO, throwable, format, args);
}
/**
* Logs a throwable with the level of info.
*
* @param throwable the throwable to log.
*/
public static void info(Throwable throwable) {
log(LogLevel.INFO, throwable);
}
/**
* Logs a message with level of warning.
*
* @param message The message to warn.
*/
public static void warn(String message) {
log(LogLevel.WARN, message);
}
/**
* Logs something with the level warn formatted.
*
* @param format The format to log the message.
* @param args The message to log.
*/
public static void warn(String format, Object... args) {
log(LogLevel.WARN, format, args);
}
/**
* Logs a throwable with a message with level of warn.
*
* @param throwable The throwable to log.
* @param message The message to log with the throwable.
*/
public static void warn(Throwable throwable, String message) {
log(LogLevel.WARN, throwable, message);
}
/**
* Logs a throwable formatted with the class.
*
* @param throwable The throwable to log.
* @param format The format to log it as.
* @param args The class that the message came from.
*/
public static void warn(Throwable throwable, String format, Object... args) {
log(LogLevel.WARN, throwable, format, args);
}
/**
* Logs a throwable with as a warn message.
*
* @param throwable The throwable to log.
*/
public static void warn(Throwable throwable) {
log(LogLevel.WARN, throwable);
}
/**
* Logs a message at error level.
*
* @param message The message to log.
*/
public static void error(String message) {
log(LogLevel.ERROR, message);
}
/**
* Log a class with an error.
*
* @param format The format for the log.
* @param args the arguments for the format string throwing the error.
*/
public static void error(String format, Object... args) {
log(LogLevel.ERROR, format, args);
}
/**
* Logs a throwable as an error level message with a message.
*
* @param throwable The throwable to log.
* @param message The message to log with the throwable.
*/
public static void error(Throwable throwable, String message) {
log(LogLevel.ERROR, throwable, message);
}
/**
* Logs a throwable formatted with the class that it came from.
*
* @param throwable The throwable to log.
* @param format The format to log the message.
* @param args The arguments for the format string.
*/
public static void error(Throwable throwable, String format, Object... args) {
log(LogLevel.ERROR, throwable, format, args);
}
/**
* Logs a throwable at error level.
*
* @param throwable The throwable to log.
*/
public static void error(Throwable throwable) {
log(LogLevel.ERROR, throwable);
}
/**
* Logs a message with the level of fatal.
*
* @param message The message to log.
*/
public static void fatal(String message) {
log(LogLevel.FATAL, message);
}
/**
* Logs that a fatal error occured in an object.
*
* @param format The format to use to log.
* @param args the arguments for the format string that the fatal log came
* from.
*/
public static void fatal(String format, Object... args) {
log(LogLevel.FATAL, format, args);
}
/**
* Logs a throwable and message with level at fatal.
*
* @param throwable The throwable to log.
* @param message The message to log with the throwable.
*/
public static void fatal(Throwable throwable, String message) {
log(LogLevel.FATAL, throwable, message);
}
/**
* Logs a formatted throwable with the arguments for the format string that it
* came from.
*
* @param throwable The throwable to log.
* @param format The format to log the throwable.
* @param args the arguments for the format string.
*/
public static void fatal(Throwable throwable, String format, Object... args) {
log(LogLevel.FATAL, throwable, format, args);
}
/**
* Logs a throwable with level fatal.
*
* @param throwable The throwable to log.
*/
public static void fatal(Throwable throwable) {
log(LogLevel.FATAL, throwable);
}
/**
* Logs a throwable as an uncaught exception.
*
* @param throwable The throwable to log.
*/
public static void uncaught(Throwable throwable) {
fatal(throwable, "Uncaught exception");
}
/**
* Catches an unsafe runnable.
*
* @param code The code that needs to be caught.
*/
public static void catchAll(UnsafeRunnable code) {
try {
code.run();
} catch (Throwable t) {
uncaught(t);
}
}
/**
* Catches unsafe code.
*
* @param code The code to catch.
* @param def
* @return
*/
public static <T> T catchAll(UnsafeFunction<T> code, T def) {
try {
return code.run();
} catch (Throwable t) {
uncaught(t);
return def;
}
}
public static <T> T catchAll(UnsafeFunction<T> code) {
return catchAll(code, null);
}
}