HytaleLoggerBackend class
Пакет: com.hypixel.hytale.logger.backend
Файл: com/hypixel/hytale/logger/backend/HytaleLoggerBackend.java
extends: LoggerBackend
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Level |
var1 |
|
HytaleLoggerBackend |
var1 |
|
FileHandler |
var1 |
|
int |
var2 |
|
|
var2 |
|
|
var2 |
|
HytaleLoggerBackend |
var2 |
|
Level |
var2 |
|
HytaleLoggerBackend |
var2 |
Методы (30)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
RawLogRecordpublic RawLogRecord(@Nonnull Level var1, String var2) |
|
|
for for(Entry var2 : var0) |
abstract |
|
for for(int var3 = 0; var3 < this.subscribers.size() |
static |
HytaleLoggerBackend |
getLoggerHytaleLoggerBackend getLogger() |
static |
HytaleLoggerBackend |
getLoggerHytaleLoggerBackend getLogger(@Nonnull String var0) |
abstract |
return |
getLoggerreturn getLogger() |
public |
String |
getLoggerNameString getLoggerName() |
public |
void |
handleErrorvoid handleError(@Nonnull RuntimeException var1, @Nonnull LogData var2) |
|
|
if if(this.parent != null) |
|
|
if if(var1 != null) |
|
|
if if(this.name != null && LOG_LEVEL_LOADER != null) |
|
|
if if(var1 != null) |
|
|
if if(var1 != null) |
static |
boolean |
isJunitTestboolean isJunitTest() |
public |
boolean |
isLoggableboolean isLoggable(@Nonnull Level var1) |
static |
void |
loadLevelsvoid loadLevels(@Nonnull List<Entry<String, Level>> var0) |
public |
void |
loadLogLevelvoid loadLogLevel() |
public |
void |
logvoid log(@Nonnull LogData var1) |
public |
void |
logvoid log(@Nonnull LogRecord var1) |
public |
void |
logvoid log(@Nonnull LogRecord var1, boolean var2) |
static |
void |
rawLogvoid rawLog(String var0) |
static |
void |
reloadLogLevelsvoid reloadLogLevels() |
static |
void |
setIndentvoid setIndent(int var0) |
public |
void |
setLevelvoid setLevel(@Nonnull Level var1) |
public |
void |
setOnLevelChangevoid setOnLevelChange(BiConsumer<Level, Level> var1) |
public |
void |
setPropagatesSentryToParentvoid setPropagatesSentryToParent(boolean var1) |
public |
void |
setSentryClientvoid setSentryClient(@Nullable IScopes var1) |
static |
void |
subscribevoid subscribe(CopyOnWriteArrayList<LogRecord> var0) |
abstract |
|
super super(var1, var2) |
static |
void |
unsubscribevoid unsubscribe(CopyOnWriteArrayList<LogRecord> var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.logger.backend;
class="kw">import com.google.common.flogger.backend.LogData;
class="kw">import com.google.common.flogger.backend.LoggerBackend;
class="kw">import com.google.common.flogger.backend.system.SimpleLogRecord;
class="kw">import com.hypixel.hytale.logger.sentry.HytaleSentryHandler;
class="kw">import com.hypixel.hytale.logger.sentry.SkipSentryException;
class="kw">import io.sentry.IScopes;
class="kw">import java.io.PrintStream;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.concurrent.CopyOnWriteArrayList;
class="kw">import java.util.function.BiConsumer;
class="kw">import java.util.function.Function;
class="kw">import java.util.logging.FileHandler;
class="kw">import java.util.logging.Level;
class="kw">import java.util.logging.LogRecord;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class HytaleLoggerBackend class="kw">extends LoggerBackend {
@Nullable
class="kw">public class="kw">static Function<String, Level> LOG_LEVEL_LOADER;
class="kw">public class="kw">static class="kw">final PrintStream REAL_SOUT = System.out;
class="kw">public class="kw">static class="kw">final PrintStream REAL_SERR = System.err;
class="kw">private class="kw">static class="kw">final Map<String, HytaleLoggerBackend> CACHE = new ConcurrentHashMap<>();
class="kw">private class="kw">static class="kw">final HytaleLoggerBackend ROOT_LOGGER = new HytaleLoggerBackend("Hytale", null);
class="kw">private class="kw">static class="kw">final int OFF_VALUE = Level.OFF.intValue();
class="kw">private class="kw">final String name;
@Nullable
class="kw">private class="kw">final HytaleLoggerBackend parent;
@Nonnull
class="kw">private Level level = Level.INFO;
@Nullable
class="kw">private BiConsumer<Level, Level> onLevelChange;
@Nullable
class="kw">private HytaleSentryHandler sentryHandler;
class="kw">private boolean propagateSentryToParent = true;
@Nonnull
class="kw">private CopyOnWriteArrayList<CopyOnWriteArrayList<LogRecord>> subscribers = new CopyOnWriteArrayList<>();
class="kw">protected HytaleLoggerBackend(String var1) {
this.name = var1;
this.parent = ROOT_LOGGER;
}
class="kw">protected HytaleLoggerBackend(String var1, @Nullable HytaleLoggerBackend var2) {
this.name = var1;
this.parent = var2;
}
class="kw">public String getLoggerName() {
class="kw">return this.name;
}
@Nonnull
class="kw">public Level getLevel() {
class="kw">return this.level;
}
class="kw">public boolean isLoggable(@Nonnull Level var1) {
int var2 = this.level.intValue();
class="kw">return var1.intValue() >= var2 && var2 != OFF_VALUE;
}
class="kw">public void log(@Nonnull LogData var1) {
this.log(SimpleLogRecord.create(var1));
}
class="kw">public void handleError(@Nonnull RuntimeException var1, @Nonnull LogData var2) {
this.log(SimpleLogRecord.error(var1, var2));
}
class="kw">public void log(@Nonnull LogRecord var1) {
this.log(var1, false);
}
class="kw">public void log(@Nonnull LogRecord var1, boolean var2) {
if (this.sentryHandler != null && !var2 && var1.getThrown() != null && !SkipSentryException.hasSkipSentry(var1.getThrown())) {
this.sentryHandler.publish(var1);
var2 = true;
}
if (!this.propagateSentryToParent && !var2 && var1.getThrown() != null) {
var2 = true;
}
if (this.parent != null) {
this.parent.log(var1, var2);
} else {
HytaleFileHandler.INSTANCE.log(var1);
HytaleConsole.INSTANCE.publish(var1);
for (int var3 = 0; var3 < this.subscribers.size(); var3++) {
this.subscribers.get(var3).add(var1);
}
}
}
class="kw">public class="kw">static void subscribe(CopyOnWriteArrayList<LogRecord> var0) {
if (!ROOT_LOGGER.subscribers.contains(var0)) {
ROOT_LOGGER.subscribers.add(var0);
}
}
class="kw">public class="kw">static void unsubscribe(CopyOnWriteArrayList<LogRecord> var0) {
if (ROOT_LOGGER.subscribers.contains(var0)) {
ROOT_LOGGER.subscribers.remove(var0);
}
}
@Nonnull
class="kw">public HytaleLoggerBackend getSubLogger(String var1) {
HytaleLoggerBackend var2 = new HytaleLoggerBackend(this.name + "][" + var1, this);
var2.loadLogLevel();
class="kw">return var2;
}
class="kw">public void setSentryClient(@Nullable IScopes var1) {
if (var1 != null) {
this.sentryHandler = new HytaleSentryHandler(var1);
this.sentryHandler.setLevel(Level.ALL);
} else {
this.sentryHandler = null;
}
}
class="kw">public void setPropagatesSentryToParent(boolean var1) {
this.propagateSentryToParent = var1;
}
class="kw">public void setOnLevelChange(BiConsumer<Level, Level> var1) {
this.onLevelChange = var1;
}
class="kw">public void setLevel(@Nonnull Level var1) {
Level var2 = this.level;
this.level = var1;
if (this.onLevelChange != null && !Objects.equals(var2, var1)) {
this.onLevelChange.accept(var2, var1);
}
}
class="kw">public void loadLogLevel() {
if (this.name != null && LOG_LEVEL_LOADER != null) {
Level var1 = LOG_LEVEL_LOADER.apply(this.name);
if (var1 != null) {
this.setLevel(var1);
}
}
}
class="kw">public class="kw">static void loadLevels(@Nonnull List<Entry<String, Level>> var0) {
for (Entry var2 : var0) {
getLogger(var2.getKey()).setLevel(var2.getValue());
}
}
class="kw">public class="kw">static void reloadLogLevels() {
CACHE.values().forEach(HytaleLoggerBackend::loadLogLevel);
}
class="kw">public class="kw">static HytaleLoggerBackend getLogger() {
class="kw">return ROOT_LOGGER;
}
class="kw">public class="kw">static HytaleLoggerBackend getLogger(@Nonnull String var0) {
if (var0.isEmpty()) {
class="kw">return getLogger();
}
HytaleLoggerBackend var1 = CACHE.computeIfAbsent(var0, HytaleLoggerBackend::new);
var1.loadLogLevel();
class="kw">return var1;
}
@Nonnull
class="kw">public class="kw">static HytaleLoggerBackend getLogger(String var0, BiConsumer<Level, Level> var1) {
HytaleLoggerBackend var2 = CACHE.computeIfAbsent(var0, HytaleLoggerBackend::new);
var2.setOnLevelChange(var1);
var2.loadLogLevel();
class="kw">return var2;
}
class="kw">public class="kw">static void setIndent(int var0) {
HytaleConsole.INSTANCE.getFormatter().maxModuleName = var0;
FileHandler var1 = HytaleFileHandler.INSTANCE.getFileHandler();
if (var1 != null) {
((HytaleLogFormatter)var1.getFormatter()).maxModuleName = var0;
}
}
class="kw">public class="kw">static boolean isJunitTest() {
for (StackTraceElement var3 : Thread.currentThread().getStackTrace()) {
if (var3.getClassName().startsWith("org.junit.")) {
class="kw">return true;
}
}
class="kw">return false;
}
class="kw">public class="kw">static void rawLog(String var0) {
ROOT_LOGGER.log(new HytaleLoggerBackend.RawLogRecord(Level.ALL, var0));
}
class="kw">public class="kw">static class RawLogRecord class="kw">extends LogRecord {
class="kw">public RawLogRecord(@Nonnull Level var1, String var2) {
super(var1, var2);
}
}
}