slswap/src/swap/log/Log.java

75 lines
1.4 KiB
Java

package swap.log;
import java.time.Instant;
public abstract class Log {
static final int LOW = 0;
static final int HINT = 3;
static final int DEFAULT = 4;
static final int WARNING = 5;
static final int ERROR = 7;
static final int HIGH = 10;
public static int saneLevel(int level) {
if (level < LOW) {
return LOW;
} else if (level > HIGH) {
return HIGH;
} else {
return level;
}
}
public static String stringLevel(int level) {
level = saneLevel(level);
switch(level) {
case LOW:
return "LOW";
case HINT:
return "HINT";
case DEFAULT:
return "DEFAULT";
case WARNING:
return "WARNING";
case ERROR:
return "ERROR";
case HIGH:
return "HIGH";
default:
return "LEVEL " + level;
}
}
public static String stringLine(Object[] line) {
String r = "";
boolean first = true;
for (Object o: line) {
if (first) {
first = false;
} else {
r += " ";
}
r += o;
}
return r;
}
public static String stringThread() {
return Thread.currentThread().toString();
}
public static String stringTime() {
return Instant.now().toString();
}
protected abstract void doWriteLine(int saneLevel, Object[] line);
public synchronized final void writeLine(int level, Object...line) {
doWriteLine(saneLevel(level), line);
}
public synchronized final void line(Object...line) {
doWriteLine(DEFAULT, line);
}
}