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);
      }
   }
}