From 578f5d40567c5ff663b4a7a8320a6d8301885d1a Mon Sep 17 00:00:00 2001 From: JFronny Date: Tue, 6 Sep 2022 19:42:47 +0200 Subject: [PATCH] [main] More default logger backends --- .../jfronny/commons/log/CompoundLogger.java | 176 ++++++++++++++++++ .../jfronny/commons/log/MemoryLogger.java | 69 +++++++ 2 files changed, 245 insertions(+) create mode 100644 src/main/java/io/gitlab/jfronny/commons/log/CompoundLogger.java create mode 100644 src/main/java/io/gitlab/jfronny/commons/log/MemoryLogger.java diff --git a/src/main/java/io/gitlab/jfronny/commons/log/CompoundLogger.java b/src/main/java/io/gitlab/jfronny/commons/log/CompoundLogger.java new file mode 100644 index 0000000..309e404 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/commons/log/CompoundLogger.java @@ -0,0 +1,176 @@ +package io.gitlab.jfronny.commons.log; + +import org.jetbrains.annotations.Nullable; + +public class CompoundLogger implements Logger { + private final String name; + private final Logger[] loggers; + + public CompoundLogger(String name, Logger... loggers) { + this.name = name; + this.loggers = loggers; + } + + @Override + public @Nullable String getName() { + return name; + } + + @Override + public void trace(String msg) { + for (Logger logger : loggers) { + logger.trace(msg); + } + } + + @Override + public void trace(String format, Object arg) { + for (Logger logger : loggers) { + logger.trace(format, arg); + } + } + + @Override + public void trace(String format, Object... args) { + for (Logger logger : loggers) { + logger.trace(format, args); + } + } + + @Override + public void trace(String msg, Throwable t) { + for (Logger logger : loggers) { + logger.trace(msg, t); + } + } + + @Override + public void debug(String msg) { + for (Logger logger : loggers) { + logger.debug(msg); + } + } + + @Override + public void debug(String format, Object arg) { + for (Logger logger : loggers) { + logger.debug(format, arg); + } + } + + @Override + public void debug(String format, Object... args) { + for (Logger logger : loggers) { + logger.debug(format, args); + } + } + + @Override + public void debug(String msg, Throwable t) { + for (Logger logger : loggers) { + logger.debug(msg, t); + } + } + + @Override + public void info(String msg) { + for (Logger logger : loggers) { + logger.info(msg); + } + } + + @Override + public void info(String format, Object arg) { + for (Logger logger : loggers) { + logger.info(format, arg); + } + } + + @Override + public void info(String format, Object... args) { + for (Logger logger : loggers) { + logger.info(format, args); + } + } + + @Override + public void info(String msg, Throwable t) { + for (Logger logger : loggers) { + logger.info(msg, t); + } + } + + @Override + public void warn(String msg) { + for (Logger logger : loggers) { + logger.warn(msg); + } + } + + @Override + public void warn(String format, Object arg) { + for (Logger logger : loggers) { + logger.warn(format, arg); + } + } + + @Override + public void warn(String format, Object... args) { + for (Logger logger : loggers) { + logger.warn(format, args); + } + } + + @Override + public void warn(String msg, Throwable t) { + for (Logger logger : loggers) { + logger.warn(msg, t); + } + } + + @Override + public void error(String msg) { + for (Logger logger : loggers) { + logger.error(msg); + } + } + + @Override + public void error(String format, Object arg) { + for (Logger logger : loggers) { + logger.error(format, arg); + } + } + + @Override + public void error(String format, Object... args) { + for (Logger logger : loggers) { + logger.error(format, args); + } + } + + @Override + public void error(String msg, Throwable t) { + for (Logger logger : loggers) { + logger.error(msg, t); + } + } + + @Override + public String format(String format, Object arg) { + if (loggers.length == 0) return Logger.super.format(format, arg); + return loggers[0].format(format, arg); + } + + @Override + public String format(String format, Object... args) { + if (loggers.length == 0) return Logger.super.format(format, args); + return loggers[0].format(format, args); + } + + @Override + public String format(String msg, Throwable t) { + if (loggers.length == 0) return Logger.super.format(msg, t); + return loggers[0].format(msg, t); + } +} diff --git a/src/main/java/io/gitlab/jfronny/commons/log/MemoryLogger.java b/src/main/java/io/gitlab/jfronny/commons/log/MemoryLogger.java new file mode 100644 index 0000000..2ccd398 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/commons/log/MemoryLogger.java @@ -0,0 +1,69 @@ +package io.gitlab.jfronny.commons.log; + +import io.gitlab.jfronny.commons.cache.FixedSizeSet; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Consumer; + +public class MemoryLogger implements Logger, Iterable { + private final String name; + private final Set lines; + + public MemoryLogger(String name) { + this.name = name; + this.lines = new LinkedHashSet<>(); + } + + public MemoryLogger(String name, int size) { + this.name = name; + this.lines = new FixedSizeSet<>(size); + } + + @Override + public @Nullable String getName() { + return name; + } + + @Override + public void trace(String msg) { + lines.add("[T] " + msg); + } + + @Override + public void debug(String msg) { + lines.add("[D] " + msg); + } + + @Override + public void info(String msg) { + lines.add("[I] " + msg); + } + + @Override + public void warn(String msg) { + lines.add("[W] " + msg); + } + + @Override + public void error(String msg) { + lines.add("[E] " + msg); + } + + @NotNull + @Override + public Iterator iterator() { + return lines.iterator(); + } + + @Override + public void forEach(Consumer action) { + lines.forEach(action); + } + + @Override + public Spliterator spliterator() { + return lines.spliterator(); + } +}