java-commons/commons-logging/src/main/java/io/gitlab/jfronny/commons/logging/Logger.java

110 lines
3.1 KiB
Java

package io.gitlab.jfronny.commons.logging;
import io.gitlab.jfronny.commons.StringFormatter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Objects;
import java.util.function.Function;
import java.util.regex.Matcher;
public interface Logger {
static Logger forName(@NotNull String name) {
return HotSwappingDelegateLogger.forName(Objects.requireNonNull(name));
}
static void registerFactory(@NotNull Function<String, Logger> factory) {
HotSwappingDelegateLogger.updateStrategy(Objects.requireNonNull(factory));
}
static void resetFactory() {
HotSwappingDelegateLogger.resetStrategy();
}
static void setMinimumLevel(@NotNull Level level) {
HotSwappingDelegateLogger.updateMinimumLevel(level);
}
@Nullable String getName();
default void trace(String msg) {
debug(msg);
}
default void trace(String format, Object arg) {
trace(format(format, arg));
}
default void trace(String format, Object... args) {
trace(format(format, args));
}
default void trace(String msg, Throwable t) {
trace(format(msg, t));
}
default void debug(String msg) {
info(msg);
}
default void debug(String format, Object arg) {
debug(format(format, arg));
}
default void debug(String format, Object... args) {
debug(format(format, args));
}
default void debug(String msg, Throwable t) {
debug(format(msg, t));
}
void info(String msg);
default void info(String format, Object arg) {
info(format(format, arg));
}
default void info(String format, Object... args) {
info(format(format, args));
}
default void info(String msg, Throwable t) {
info(format(msg, t));
}
default void warn(String msg) {
info(msg);
}
default void warn(String format, Object arg) {
warn(format(format, arg));
}
default void warn(String format, Object... args) {
warn(format(format, args));
}
default void warn(String msg, Throwable t) {
warn(format(msg, t));
}
default void error(String msg) {
warn(msg);
}
default void error(String format, Object arg) {
error(format(format, arg));
}
default void error(String format, Object... args) {
error(format(format, args));
}
default void error(String msg, Throwable t) {
error(format(msg, t));
}
default String format(String format, Object arg) {
return format.replaceFirst("\\{}", Matcher.quoteReplacement(StringFormatter.toString(arg)));
}
default String format(String format, Object... args) {
if (args == null || format == null) return format;
for (Object arg : args) {
format = format.replaceFirst("\\{}", Matcher.quoteReplacement(StringFormatter.toString(arg)));
}
return format;
}
default String format(String msg, Throwable t) {
if (t == null) return msg;
return msg + System.lineSeparator() + StringFormatter.toString(t);
}
}