Simple logger bootstrap
import [Link].*;
import [Link];
public enum Logger implements ExceptionLogger {
instance("TEST");
private final String prefix;
public final Color warn_colour;
public final Color error_colour;
private final OutputStream output;
private final PrintStream print;
Logger(String prefix) {
this(prefix, [Link], [Link]);
}
Logger(String prefix, Color warn_colour, Color error_colour) {
[Link] = [Link]("[%s]", prefix);
this.warn_colour = warn_colour;
this.error_colour = error_colour;
[Link] = new BufferedOutputStream([Link]);
[Link] = new PrintStream([Link]);
}
private void write(Object object) {
String text;
if(object instanceof String)
text = (String) object;
else if(object instanceof Color)
text = [Link]();
else throw new RuntimeException("OBJECT IS NOT A TEXT: " + object);
try {
[Link]([Link](StandardCharsets.UTF_8));
} catch (IOException ignored) {
[Link](text);
}
}
private void flush() {
try {
[Link]();
} catch (IOException ignored) {}
}
private String parsePrefix(String text) {
return [Link] + " " + text + "\n";
}
public void info(String text) {
[Link]([Link](text));
[Link]();
}
public void warn(String text) {
[Link](this.warn_colour + [Link](text) + [Link]);
[Link]();
}
public void err(String text) {
[Link](this.error_colour + [Link](text) + [Link]);
[Link]();
}
public void warn(Throwable e) {
[Link](this.warn_colour);
[Link]([Link]);
[Link]([Link]);
[Link]();
}
public void err(Throwable e) {
[Link](this.error_colour);
[Link]([Link]);
[Link]([Link]);
[Link]();
}
public void warn(String message, Throwable e) {
[Link](this.warn_colour);
[Link](message + "\n");
[Link]([Link]);
[Link]([Link]);
[Link]();
}
public void err(String message, Throwable e) {
[Link](this.error_colour);
[Link](message + "\n");
[Link]([Link]);
[Link]([Link]);
[Link]();
}
public PrintStream getPrintStream() {
return [Link];
}
@Override
public void lwjglError(LWJGLError e) {
[Link]("LWJGL ERROR CAUGHT: ", e);
}
@Override
public void shaderError(ShaderError e) {
[Link]("SHADER ERROR CAUGHT: ", e);
}
@Override
public void textureException(TextureException e) {
[Link]("INVALID TEXTURE: ", e);
}
@Override
public void exception(Throwable e) {
[Link]("OPENGL EXCEPTION CAUGHT: ", e);
}
}