70 lines
1.3 KiB
Java
70 lines
1.3 KiB
Java
package minesweeper.solver.utility;
|
|
|
|
public class Logger {
|
|
|
|
/**
|
|
* Nothing gets logged
|
|
*/
|
|
public final static Logger NO_LOGGING = new Logger(Level.NONE);
|
|
|
|
public enum Level {
|
|
DEBUG(1),
|
|
INFO(2),
|
|
WARN(3),
|
|
ERROR(4),
|
|
ALWAYS(90),
|
|
NONE(99);
|
|
|
|
private int value;
|
|
private Level(int value) {
|
|
this.value = value;
|
|
}
|
|
}
|
|
|
|
private final String logName;
|
|
private final Level logLevel;
|
|
private final String prefix;
|
|
|
|
public Logger(Level level) {
|
|
this(level, "");
|
|
}
|
|
|
|
public Logger(Level level, String logName) {
|
|
this.logLevel = level;
|
|
this.logName = logName;
|
|
if (this.logName.isEmpty()) {
|
|
this.prefix = " ";
|
|
} else {
|
|
this.prefix = " " + this.logName + " ";
|
|
}
|
|
|
|
}
|
|
|
|
public void log(Level level, String format, Object... parms) {
|
|
|
|
if (level.value < logLevel.value) {
|
|
return;
|
|
}
|
|
|
|
String output;
|
|
try {
|
|
output = String.format(format, parms);
|
|
|
|
} catch (Exception e) { // if it goes wrong show the unformated information
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(format);
|
|
sb.append(" Parms:");
|
|
for (Object parm: parms) {
|
|
sb.append("[");
|
|
sb.append(parm);
|
|
sb.append("]");
|
|
}
|
|
output = sb.toString();
|
|
}
|
|
|
|
System.out.println(level + prefix + output);
|
|
|
|
}
|
|
|
|
}
|