[main] More default logger backends

This commit is contained in:
Johannes Frohnmeyer 2022-09-06 19:42:47 +02:00
parent 7112440bb7
commit 578f5d4056
Signed by: Johannes
GPG Key ID: E76429612C2929F4
2 changed files with 245 additions and 0 deletions

View File

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

View File

@ -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<String> {
private final String name;
private final Set<String> 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<String> iterator() {
return lines.iterator();
}
@Override
public void forEach(Consumer<? super String> action) {
lines.forEach(action);
}
@Override
public Spliterator<String> spliterator() {
return lines.spliterator();
}
}