diff --git a/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppender.java b/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppender.java index 5c7e027..69ce041 100644 --- a/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppender.java +++ b/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppender.java @@ -11,6 +11,8 @@ import pl.tkowalcz.tjahzi.stats.MonitoringModule; import pl.tkowalcz.tjahzi.stats.MutableMonitoringModuleWrapper; import java.nio.ByteBuffer; +import java.util.List; +import java.util.Map; import java.util.function.Function; public class LokiAppender extends LokiAppenderConfigurator { @@ -23,6 +25,7 @@ public class LokiAppender extends LokiAppenderConfigurator { private TjahziLogger logger; private String logLevelLabel; + private List mdcLogLabels; private MutableMonitoringModuleWrapper monitoringModuleWrapper; public EfficientPatternLayout getEfficientLayout() { @@ -58,11 +61,11 @@ public class LokiAppender extends LokiAppenderConfigurator { protected void append(ILoggingEvent event) { String logLevel = event.getLevel().toString(); ByteBuffer logLine = actualEncoder.apply(event); + Map mdcPropertyMap = event.getMDCPropertyMap(); LabelSerializer labelSerializer = LabelSerializers.threadLocal(); - if (logLevelLabel != null) { - labelSerializer.appendLabel(logLevelLabel, logLevel); - } + appendLogLabel(labelSerializer, logLevel); + appendMdcLogLabels(labelSerializer, mdcPropertyMap); logger.log( event.getTimeStamp(), @@ -71,6 +74,21 @@ public class LokiAppender extends LokiAppenderConfigurator { ); } + private void appendLogLabel(LabelSerializer labelSerializer, String logLevel) { + if (logLevelLabel != null) { + labelSerializer.appendLabel(logLevelLabel, logLevel); + } + } + + private void appendMdcLogLabels(LabelSerializer serializer, + Map mdcPropertyMap) { + mdcLogLabels.forEach(mdcLogLabel -> { + if (mdcPropertyMap.containsKey(mdcLogLabel)) { + serializer.appendLabel(mdcLogLabel, mdcPropertyMap.get(mdcLogLabel)); + } + }); + } + @Override public void start() { if (encoder == null) { @@ -88,6 +106,7 @@ public class LokiAppender extends LokiAppenderConfigurator { LokiAppenderFactory lokiAppenderFactory = new LokiAppenderFactory(this); loggingSystem = lokiAppenderFactory.createAppender(); logLevelLabel = lokiAppenderFactory.getLogLevelLabel(); + mdcLogLabels = lokiAppenderFactory.getMdcLogLabels(); monitoringModuleWrapper = lokiAppenderFactory.getMonitoringModuleWrapper(); logger = loggingSystem.createLogger(); diff --git a/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppenderConfigurator.java b/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppenderConfigurator.java index 84f6363..879786f 100644 --- a/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppenderConfigurator.java +++ b/logback-appender/src/main/java/pl/tkowalcz/tjahzi/logback/LokiAppenderConfigurator.java @@ -21,6 +21,7 @@ public abstract class LokiAppenderConfigurator extends UnsynchronizedAppenderBas private boolean useOffHeapBuffer = true; private String logLevelLabel; + private List mdcLogLabels = new ArrayList<>(); private long batchSize = 10_2400; private long batchWait = 5; @@ -133,4 +134,12 @@ public abstract class LokiAppenderConfigurator extends UnsynchronizedAppenderBas public List