Paper/src/main/java/net/minecraft/server/ConsoleLogFormatter.java
2012-08-21 19:17:29 -05:00

66 Zeilen
2.2 KiB
Java

package net.minecraft.server;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.regex.Pattern; // CraftBukkit
final class ConsoleLogFormatter extends Formatter {
private SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// CraftBukkit start - add color stripping, change constructor to take it
private Pattern pattern = Pattern.compile("\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]");
private boolean strip = false;
ConsoleLogFormatter(boolean strip) {
this.strip = strip;
}
// CraftBukkit end
public String format(LogRecord logrecord) {
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append(this.a.format(Long.valueOf(logrecord.getMillis())));
Level level = logrecord.getLevel();
if (level == Level.FINEST) {
stringbuilder.append(" [FINEST] ");
} else if (level == Level.FINER) {
stringbuilder.append(" [FINER] ");
} else if (level == Level.FINE) {
stringbuilder.append(" [FINE] ");
} else if (level == Level.INFO) {
stringbuilder.append(" [INFO] ");
} else if (level == Level.WARNING) {
stringbuilder.append(" [WARNING] ");
} else if (level == Level.SEVERE) {
stringbuilder.append(" [SEVERE] ");
} else { // CraftBukkit
stringbuilder.append(" [").append(level.getLocalizedName()).append("] ");
}
stringbuilder.append(formatMessage(logrecord)); // CraftBukkit
stringbuilder.append('\n');
Throwable throwable = logrecord.getThrown();
if (throwable != null) {
StringWriter stringwriter = new StringWriter();
throwable.printStackTrace(new PrintWriter(stringwriter));
stringbuilder.append(stringwriter.toString());
}
// CraftBukkit start - handle stripping color
if (this.strip) {
return this.pattern.matcher(stringbuilder.toString()).replaceAll("");
} else {
return stringbuilder.toString();
}
// CraftBukkit end
}
}