HytaleLogFormatter class
Пакет: com.hypixel.hytale.logger.backend
Файл: com/hypixel/hytale/logger/backend/HytaleLogFormatter.java
extends: Formatter
Поля (25)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
DateTimeFormatter |
DATE_FORMATTER |
|
boolean |
var10 |
|
String |
var11 |
|
|
var11 |
|
|
var11 |
|
int |
var12 |
|
String |
var2 |
|
|
var2 |
|
|
var2 |
|
|
var2 |
|
|
var2 |
|
StringWriter |
var3 |
|
String |
var4 |
|
int |
var5 |
|
StringBuilder |
var6 |
|
String |
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
|
var7 |
|
int |
var8 |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var2 == null) |
|
|
if if(var10) |
|
|
if if(var1 instanceof HytaleLoggerBackend.RawLogRecord) |
|
|
if if(var5 < this.maxModuleName) |
|
|
if if(var10) |
|
|
if if(var7 != null) |
|
|
if if(var12 < 6) |
static |
String |
stripAnsiString stripAnsi(@Nonnull String var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.logger.backend;
class="kw">import java.io.PrintWriter;
class="kw">import java.io.StringWriter;
class="kw">import java.time.LocalDateTime;
class="kw">import java.time.ZoneOffset;
class="kw">import java.time.format.DateTimeFormatter;
class="kw">import java.util.function.BooleanSupplier;
class="kw">import java.util.logging.Formatter;
class="kw">import java.util.logging.Level;
class="kw">import java.util.logging.LogRecord;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">public class HytaleLogFormatter class="kw">extends Formatter {
class="kw">private class="kw">static class="kw">final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
class="kw">private class="kw">static class="kw">final Pattern ANSI_CONTROL_CODES = Pattern.compile("\u001b\\[[;\\d]*m");
class="kw">private BooleanSupplier ansi;
class="kw">public int maxModuleName;
class="kw">private int shorterCount;
class="kw">public HytaleLogFormatter(BooleanSupplier var1) {
this.ansi = var1;
}
@Nonnull
@Override
class="kw">public String format(@Nonnull LogRecord var1) {
String var2 = var1.getMessage();
if (var2 == null) {
var2 = "null";
}
if (var1.getParameters() != null && var1.getParameters().length > 0) {
try {
var2 = String.format(var2, var1.getParameters());
} catch (RuntimeException var9) {
throw new IllegalArgumentException("Error logging using format string: " + var1.getMessage(), var9);
}
}
if (var1.getThrown() != null) {
StringWriter var3 = new StringWriter();
var1.getThrown().printStackTrace(new PrintWriter(var3));
var2 = var2 + "\n" + var3.toString();
}
boolean var10 = this.ansi.getAsBoolean();
if (var10) {
var2 = var2 + "\u001b[m";
}
if (var1 class="kw">instanceof HytaleLoggerBackend.RawLogRecord) {
class="kw">return !var10 ? stripAnsi(var2) + "\n" : var2 + "\n";
}
String var4 = var1.getLoggerName();
int var5 = var4.length() + 3;
if ((var5 <= this.maxModuleName || var5 >= 35) && this.shorterCount <= 500) {
if (var5 < this.maxModuleName) {
this.shorterCount++;
}
} else {
this.maxModuleName = var5;
this.shorterCount = 0;
}
StringBuilder var6 = new StringBuilder(33 + this.maxModuleName + var2.length());
if (var10) {
String var7 = null;
int var8 = var1.getLevel().intValue();
if (var8 <= Level.ALL.intValue()) {
var7 = "\u001b[37m";
} else if (var8 <= Level.FINEST.intValue()) {
var7 = "\u001b[36m";
} else if (var8 <= Level.FINER.intValue()) {
var7 = "\u001b[34m";
} else if (var8 <= Level.FINE.intValue()) {
var7 = "\u001b[35m";
} else if (var8 <= Level.CONFIG.intValue()) {
var7 = "\u001b[32m";
} else if (var8 <= Level.INFO.intValue()) {
var7 = "\u001b[m";
} else if (var8 <= Level.WARNING.intValue()) {
var7 = "\u001b[33m";
} else if (var8 <= Level.SEVERE.intValue()) {
var7 = "\u001b[31m";
}
if (var7 != null) {
var6.append(var7);
}
}
var6.append('[');
DATE_FORMATTER.formatTo(LocalDateTime.ofInstant(var1.getInstant(), ZoneOffset.UTC), var6);
var6.append(' ');
String var11;
if (Level.WARNING.equals(var1.getLevel())) {
var11 = "WARN";
} else {
var11 = var1.getLevel().getName();
}
int var12 = var11.length();
if (var12 < 6) {
var6.append(" ".repeat(6 - var12));
var6.append(var11);
} else {
var6.append(var11, 0, 6);
}
var6.append("] ");
var6.append(" ".repeat(Math.max(0, this.maxModuleName - var5)));
var6.append('[').append(var4).append("] ").append(var10 ? var2 : stripAnsi(var2)).append('\n');
class="kw">return var6.toString();
}
class="kw">public class="kw">static String stripAnsi(@Nonnull String var0) {
class="kw">return ANSI_CONTROL_CODES.matcher(var0).replaceAll("");
}
}