|
@@ -6,13 +6,12 @@ import org.apache.logging.log4j.core.Layout;
|
|
|
import org.apache.logging.log4j.core.LogEvent;
|
|
|
import org.apache.logging.log4j.core.LoggerContext;
|
|
|
import org.apache.logging.log4j.core.appender.AbstractAppender;
|
|
|
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
|
|
|
import org.apache.logging.log4j.core.config.Configuration;
|
|
|
import org.apache.logging.log4j.core.config.LoggerConfig;
|
|
|
import org.apache.logging.log4j.core.config.Property;
|
|
|
-import org.apache.logging.log4j.core.impl.ThrowableProxy;
|
|
|
import org.apache.logging.log4j.core.layout.PatternLayout;
|
|
|
|
|
|
-import java.io.Serializable;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
|
|
/**
|
|
@@ -27,11 +26,16 @@ public class Log4j2LoggerContext implements MagicLoggerContext {
|
|
|
LoggerContext context = (LoggerContext) LogManager.getContext(false);
|
|
|
Configuration configuration = context.getConfiguration();
|
|
|
LoggerConfig logger = configuration.getRootLogger();
|
|
|
- PatternLayout layout = PatternLayout.newBuilder()
|
|
|
- .withCharset(StandardCharsets.UTF_8)
|
|
|
- .withConfiguration(configuration)
|
|
|
- .withPattern("%d %t %p %X{TracingMsg} %c - %m%n")
|
|
|
- .build();
|
|
|
+ Layout<String> layout = logger.getAppenders().values()
|
|
|
+ .stream()
|
|
|
+ .filter(it -> it instanceof ConsoleAppender)
|
|
|
+ .map(it -> (Layout<String>)it.getLayout())
|
|
|
+ .findFirst()
|
|
|
+ .orElseGet(() -> PatternLayout.newBuilder()
|
|
|
+ .withCharset(StandardCharsets.UTF_8)
|
|
|
+ .withConfiguration(configuration)
|
|
|
+ .withPattern(PATTERN)
|
|
|
+ .build());
|
|
|
MagicLog4j2Appender appender = new MagicLog4j2Appender("Magic", logger.getFilter(), layout);
|
|
|
appender.start();
|
|
|
configuration.addAppender(appender);
|
|
@@ -41,20 +45,16 @@ public class Log4j2LoggerContext implements MagicLoggerContext {
|
|
|
|
|
|
static class MagicLog4j2Appender extends AbstractAppender {
|
|
|
|
|
|
- MagicLog4j2Appender(String name, Filter filter, Layout<? extends Serializable> layout) {
|
|
|
+ private Layout<String> layout;
|
|
|
+
|
|
|
+ MagicLog4j2Appender(String name, Filter filter, Layout<String> layout) {
|
|
|
super(name, filter, layout, true, Property.EMPTY_ARRAY);
|
|
|
+ this.layout = layout;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void append(LogEvent event) {
|
|
|
- LogInfo logInfo = new LogInfo();
|
|
|
- logInfo.setLevel(event.getLevel().name().toLowerCase());
|
|
|
- logInfo.setMessage(event.getMessage().getFormattedMessage());
|
|
|
- ThrowableProxy throwableProxy = event.getThrownProxy();
|
|
|
- if (throwableProxy != null) {
|
|
|
- logInfo.setThrowable(throwableProxy.getThrowable());
|
|
|
- }
|
|
|
- MagicLoggerContext.println(logInfo);
|
|
|
+ MagicLoggerContext.println(this.layout.toSerializable(event));
|
|
|
}
|
|
|
}
|
|
|
}
|