/
PrimitiveLogger.java
78 lines (65 loc) · 2.86 KB
/
PrimitiveLogger.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
package net.ME1312.Galaxi.Library.Log;
import net.ME1312.Galaxi.Library.Util;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import static java.util.logging.Level.*;
/**
* Primitive Log Handler Class
*/
public final class PrimitiveLogger extends Handler {
private final Logger log;
private boolean open = true;
PrimitiveLogger(Logger log) {
this.log = log;
}
@Override
public void publish(LogRecord record) {
if (open) {
LogStream stream = log.info;
if (record.getLevel().intValue() == OFF.intValue()) { // Translate Log Level
stream = null;
} else if (record.getLevel().intValue() == FINE.intValue() || record.getLevel().intValue() == FINER.intValue() || record.getLevel().intValue() == FINEST.intValue()) {
stream = log.debug;
} else if (record.getLevel().intValue() == ALL.intValue() || record.getLevel().intValue() == CONFIG.intValue() || record.getLevel().intValue() == INFO.intValue()) {
// stream = log.info;
} else if (record.getLevel().intValue() == WARNING.intValue()) {
stream = log.warn;
} else if (record.getLevel().intValue() == SEVERE.intValue()) {
stream = log.error;
}
if (stream != null) {
String message = record.getMessage();
int i = 0;
if (record.getParameters() != null) for (Object obj : record.getParameters()) {// Parse Parameters
String value;
if (obj instanceof Throwable) {
StringWriter sw = new StringWriter();
((Throwable) obj).printStackTrace(new PrintWriter(sw));
value = sw.toString();
} else {
value = Util.getDespiteException(() -> (obj == null)?"null":obj.toString(), "");
}
if (message.contains("{" + i + "}")) { // Write Parameters
message = message.replace("{" + i + "}", value);
} else if (message.contains("{}")) {
message = message.replaceFirst("\\{}", value);
} else {
message += "\n" + value;
}
i++;
}
message = message.replace("\r", ""); // Remove carriage returns (has special meaning in the Galaxi)
for (String m : ((message.contains("\n"))?message.split("\n"):new String[]{ message })) stream.println(m); // Properly format new lines (if they exist)
}
}
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
open = false;
}
}