mirror of
https://github.com/unmojang/authlib-injector.git
synced 2025-10-01 07:11:39 -04:00
Allow to turn on debug mode for specified loggers
This commit is contained in:
parent
177a647878
commit
45b4bfba0d
@ -51,7 +51,7 @@ public final class AuthlibInjector {
|
|||||||
public static final String PROP_DISABLE_HTTPD = "authlibinjector.httpd.disable";
|
public static final String PROP_DISABLE_HTTPD = "authlibinjector.httpd.disable";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether to turn on debug logging.
|
* The name of loggers to have debug level turned on.
|
||||||
*/
|
*/
|
||||||
public static final String PROP_DEBUG = "authlibinjector.debug";
|
public static final String PROP_DEBUG = "authlibinjector.debug";
|
||||||
|
|
||||||
|
@ -4,6 +4,10 @@ import static moe.yushi.authlibinjector.AuthlibInjector.PROP_DEBUG;
|
|||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.logging.Filter;
|
||||||
import java.util.logging.Formatter;
|
import java.util.logging.Formatter;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.LogRecord;
|
import java.util.logging.LogRecord;
|
||||||
@ -13,25 +17,25 @@ import java.util.logging.StreamHandler;
|
|||||||
public final class Logging {
|
public final class Logging {
|
||||||
private Logging() {}
|
private Logging() {}
|
||||||
|
|
||||||
public static final Logger ROOT = Logger.getLogger("moe.yushi.authlibinjector");
|
private static final String PREFIX = "moe.yushi.authlibinjector";
|
||||||
public static final Logger LAUNCH = Logger.getLogger("moe.yushi.authlibinjector.launch");
|
|
||||||
public static final Logger CONFIG = Logger.getLogger("moe.yushi.authlibinjector.config");
|
public static final Logger ROOT = Logger.getLogger(PREFIX);
|
||||||
public static final Logger TRANSFORM = Logger.getLogger("moe.yushi.authlibinjector.transform");
|
public static final Logger LAUNCH = Logger.getLogger(PREFIX + ".launch");
|
||||||
public static final Logger HTTPD = Logger.getLogger("moe.yushi.authlibinjector.httpd");
|
public static final Logger CONFIG = Logger.getLogger(PREFIX + ".config");
|
||||||
|
public static final Logger TRANSFORM = Logger.getLogger(PREFIX + ".transform");
|
||||||
|
public static final Logger HTTPD = Logger.getLogger(PREFIX + ".httpd");
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
initRootLogger();
|
initRootLogger();
|
||||||
initLoggingLevels();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void initRootLogger() {
|
private static void initRootLogger() {
|
||||||
ROOT.setLevel(Level.INFO);
|
ROOT.setLevel(Level.ALL);
|
||||||
ROOT.setUseParentHandlers(false);
|
ROOT.setUseParentHandlers(false);
|
||||||
StreamHandler handler = new StreamHandler(System.err, new Formatter() {
|
StreamHandler handler = new StreamHandler(System.err, new Formatter() {
|
||||||
private String convertLoggerName(String loggerName) {
|
private String convertLoggerName(String loggerName) {
|
||||||
final String prefix = "moe.yushi.authlibinjector";
|
if (loggerName.startsWith(PREFIX)) {
|
||||||
if (loggerName.startsWith(prefix)) {
|
return "authlib-injector" + loggerName.substring(PREFIX.length());
|
||||||
return "authlib-injector" + loggerName.substring(prefix.length());
|
|
||||||
} else {
|
} else {
|
||||||
return loggerName;
|
return loggerName;
|
||||||
}
|
}
|
||||||
@ -63,14 +67,30 @@ public final class Logging {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
handler.setLevel(Level.ALL);
|
handler.setLevel(Level.ALL);
|
||||||
handler.setFilter(null);
|
handler.setFilter(createFilter());
|
||||||
ROOT.addHandler(handler);
|
ROOT.addHandler(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void initLoggingLevels() {
|
private static Predicate<String> createDebugLoggerNamePredicate() {
|
||||||
if ("true".equals(System.getProperty(PROP_DEBUG))) {
|
String argument = System.getProperty(PROP_DEBUG);
|
||||||
ROOT.setLevel(Level.ALL);
|
if (argument == null) {
|
||||||
|
return any -> false;
|
||||||
|
} else {
|
||||||
|
Set<String> debugLoggers = new HashSet<>();
|
||||||
|
for (String element : argument.split(",")) {
|
||||||
|
if (element.equals("true") || element.equals("all")) {
|
||||||
|
return loggerName -> loggerName.startsWith(PREFIX);
|
||||||
|
} else {
|
||||||
|
debugLoggers.add(PREFIX + "." + element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return debugLoggers::contains;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Filter createFilter() {
|
||||||
|
Predicate<String> namePredicate = createDebugLoggerNamePredicate();
|
||||||
|
return log -> log.getLevel().intValue() >= Level.INFO.intValue() || namePredicate.test(log.getLoggerName());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user