2021-10-29 22:50:42 +02:00
|
|
|
package io.gitlab.jfronny.inceptum.util;
|
2021-10-28 20:19:09 +02:00
|
|
|
|
|
|
|
import org.apache.logging.log4j.core.Appender;
|
|
|
|
import org.apache.logging.log4j.core.Core;
|
|
|
|
import org.apache.logging.log4j.core.Filter;
|
|
|
|
import org.apache.logging.log4j.core.LogEvent;
|
|
|
|
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
|
|
|
import org.apache.logging.log4j.core.config.plugins.Plugin;
|
|
|
|
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
|
|
|
|
import org.apache.logging.log4j.core.config.plugins.PluginElement;
|
|
|
|
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
|
|
|
|
import org.apache.logging.log4j.util.StringBuilderFormattable;
|
|
|
|
|
|
|
|
import java.time.Instant;
|
|
|
|
import java.util.LinkedHashSet;
|
|
|
|
import java.util.Set;
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
import java.util.concurrent.ConcurrentMap;
|
|
|
|
|
|
|
|
@Plugin(name = "MapAppender", category = Core.CATEGORY_NAME, elementType = Appender.ELEMENT_TYPE)
|
|
|
|
public class MapAppender extends AbstractAppender {
|
|
|
|
public static final ConcurrentMap<String, LogEvent> EVENT_MAP = new ConcurrentHashMap<>();
|
|
|
|
public static final Set<String> LOG = new LinkedHashSet<>();
|
2021-10-29 23:16:03 +02:00
|
|
|
public static final Set<String> LOG_MESSAGES = new LinkedHashSet<>();
|
2021-10-28 20:19:09 +02:00
|
|
|
|
|
|
|
protected MapAppender(String name, Filter filter) {
|
|
|
|
//super(name, filter, null);
|
|
|
|
super(name, filter, null, false, null);
|
|
|
|
}
|
|
|
|
|
|
|
|
@PluginFactory
|
|
|
|
public static MapAppender createAppender(
|
|
|
|
@PluginAttribute("name") String name,
|
|
|
|
@PluginElement("Filter") Filter filter) {
|
|
|
|
return new MapAppender(name, filter);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void append(LogEvent event) {
|
|
|
|
EVENT_MAP.put(Instant.now().toString(), event);
|
|
|
|
StringBuilder msg = new StringBuilder(event.getLevel().name())
|
|
|
|
.append(" | ")
|
|
|
|
.append(Instant.now().toString())
|
|
|
|
.append(" | [")
|
|
|
|
.append(event.getThreadName())
|
|
|
|
.append("] ")
|
|
|
|
.append(event.getSource().getClassName())
|
|
|
|
.append(" - ");
|
2021-10-29 23:16:03 +02:00
|
|
|
String msgText;
|
|
|
|
if (event.getMessage() instanceof StringBuilderFormattable sbf) {
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
sbf.formatTo(sb);
|
|
|
|
msgText = sb.toString();
|
|
|
|
} else msgText = event.getMessage().getFormattedMessage();
|
|
|
|
msg.append(msgText);
|
2021-10-28 20:19:09 +02:00
|
|
|
LOG.add(msg.toString());
|
2021-10-29 23:16:03 +02:00
|
|
|
LOG_MESSAGES.add(msgText);
|
2021-10-28 20:19:09 +02:00
|
|
|
}
|
|
|
|
}
|