From e0dfd679b021591a388b741589d3c667302ccaf8 Mon Sep 17 00:00:00 2001 From: "tomasz.kowalczewski" Date: Fri, 18 Jun 2021 23:08:56 +0200 Subject: [PATCH] Re #53: Refactored label serializer api so its easier to setup during tests. Fixed error in Logback appender when log level label is null. --- .../java/pl/tkowalcz/tjahzi/LabelSerializer.java | 7 +++++-- .../java/pl/tkowalcz/tjahzi/LabelSerializers.java | 13 +++---------- .../thjazi/protobuf/ProtobufDeserializer.java | 9 +++------ .../tjahzi/LogBufferSerializerDeserializerTest.java | 4 +--- .../pl/tkowalcz/tjahzi/LogBufferSerializerTest.java | 4 +--- .../pl/tkowalcz/tjahzi/LogBufferTranscoderTest.java | 4 +--- .../pl/tkowalcz/tjahzi/log4j2/AppenderLogic.java | 3 +-- .../pl/tkowalcz/tjahzi/logback/LokiAppender.java | 6 +++--- 8 files changed, 18 insertions(+), 32 deletions(-) diff --git a/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializer.java b/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializer.java index f9b86ca..3e69dad 100644 --- a/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializer.java +++ b/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializer.java @@ -47,8 +47,11 @@ public class LabelSerializer { cursor - lastSizePosition - Integer.BYTES); } - public void appendWholeLabelValue(String value) { - cursor += buffer.putStringAscii(cursor, value); + public void appendLabel(String key, String value) { + appendLabelName(key); + startAppendingLabelValue(); + appendPartialLabelValue(value); + finishAppendingLabelValue(); } public DirectBuffer getBuffer() { diff --git a/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializers.java b/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializers.java index c52477d..abb9cc6 100644 --- a/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializers.java +++ b/core/src/main/java/pl/tkowalcz/tjahzi/LabelSerializers.java @@ -17,15 +17,9 @@ public class LabelSerializers { public static LabelSerializer from(Map labels, String... moreLabels) { LabelSerializer labelSerializer = threadLocal(); - labels.forEach((key, value) -> { - labelSerializer.appendLabelName(key); - labelSerializer.appendWholeLabelValue(value); - } - ); - + labels.forEach(labelSerializer::appendLabel); for (int i = 0; i < moreLabels.length; i += 2) { - labelSerializer.appendLabelName(moreLabels[i]); - labelSerializer.appendWholeLabelValue(moreLabels[i + 1]); + labelSerializer.appendLabel(moreLabels[i], moreLabels[i + 1]); } return labelSerializer; @@ -36,8 +30,7 @@ public class LabelSerializers { LabelSerializer labelSerializer = threadLocal(); for (int i = 0; i < labels.length; i += 2) { - labelSerializer.appendLabelName(labels[i]); - labelSerializer.appendWholeLabelValue(labels[i + 1]); + labelSerializer.appendLabel(labels[i], labels[i + 1]); } return labelSerializer; diff --git a/core/src/test/java/pl/tkowalcz/thjazi/protobuf/ProtobufDeserializer.java b/core/src/test/java/pl/tkowalcz/thjazi/protobuf/ProtobufDeserializer.java index 77064e1..e390fc2 100644 --- a/core/src/test/java/pl/tkowalcz/thjazi/protobuf/ProtobufDeserializer.java +++ b/core/src/test/java/pl/tkowalcz/thjazi/protobuf/ProtobufDeserializer.java @@ -29,12 +29,9 @@ public class ProtobufDeserializer { ); LabelSerializer labelSerializer = LabelSerializers.threadLocal(); - labelSerializer.appendLabelName("faaaoo"); - labelSerializer.appendWholeLabelValue("baqwefewr"); - labelSerializer.appendLabelName("a232aa"); - labelSerializer.appendWholeLabelValue("bbbrgwew"); - labelSerializer.appendLabelName("LEVEL"); - labelSerializer.appendWholeLabelValue("DEBUG"); + labelSerializer.appendLabel("faaaoo", "baqwefewr"); + labelSerializer.appendLabel("a232aa", "bbbrgwew"); + labelSerializer.appendLabel("LEVEL", "DEBUG"); LogBufferSerializer serializer = new LogBufferSerializer(logBuffer.buffer()); serializer.writeTo( diff --git a/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerDeserializerTest.java b/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerDeserializerTest.java index 575af73..bd2cb7b 100644 --- a/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerDeserializerTest.java +++ b/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerDeserializerTest.java @@ -86,9 +86,7 @@ class LogBufferSerializerDeserializerTest { LabelSerializer labelSerializer = LabelSerializers.from(labels); if (logLevelLabel != null) { - labelSerializer - .appendLabelName(logLevelLabel) - .appendWholeLabelValue(logLevel); + labelSerializer.appendLabel(logLevelLabel, logLevel); } // When diff --git a/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerTest.java b/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerTest.java index 7c3bbc3..408e4bc 100644 --- a/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerTest.java +++ b/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferSerializerTest.java @@ -26,9 +26,7 @@ class LogBufferSerializerTest { LabelSerializer labelSerializer = LabelSerializers.from(labels); if (logLevelLabel != null) { - labelSerializer - .appendLabelName(logLevelLabel) - .appendWholeLabelValue(logLevel); + labelSerializer.appendLabel(logLevelLabel, logLevel); } // When diff --git a/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferTranscoderTest.java b/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferTranscoderTest.java index a505f62..b783fe3 100644 --- a/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferTranscoderTest.java +++ b/core/src/test/java/pl/tkowalcz/tjahzi/LogBufferTranscoderTest.java @@ -42,9 +42,7 @@ class LogBufferTranscoderTest { LabelSerializer labelSerializer = LabelSerializers.from(labels); if (logLevelLabel != null) { - labelSerializer - .appendLabelName(logLevelLabel) - .appendWholeLabelValue(logLevel); + labelSerializer.appendLabel(logLevelLabel, logLevel); } serializer.writeTo( diff --git a/log4j2-appender/src/main/java/pl/tkowalcz/tjahzi/log4j2/AppenderLogic.java b/log4j2-appender/src/main/java/pl/tkowalcz/tjahzi/log4j2/AppenderLogic.java index a8beb52..0fa33ab 100644 --- a/log4j2-appender/src/main/java/pl/tkowalcz/tjahzi/log4j2/AppenderLogic.java +++ b/log4j2-appender/src/main/java/pl/tkowalcz/tjahzi/log4j2/AppenderLogic.java @@ -74,8 +74,7 @@ public class AppenderLogic implements BiConsumer { private void processDynamicLabelsIfAny(LabelSerializer labelSerializer, LogEvent event) { if (logLevelLabel != null) { - labelSerializer.appendLabelName(logLevelLabel); - labelSerializer.appendWholeLabelValue(event.getLevel().toString()); + labelSerializer.appendLabel(logLevelLabel, event.getLevel().toString()); } for (Map.Entry labelPrinter : lokiLabels.entrySet()) { 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 df26b29..5c7e027 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 @@ -60,9 +60,9 @@ public class LokiAppender extends LokiAppenderConfigurator { ByteBuffer logLine = actualEncoder.apply(event); LabelSerializer labelSerializer = LabelSerializers.threadLocal(); - labelSerializer - .appendLabelName(logLevelLabel) - .appendWholeLabelValue(logLevel); + if (logLevelLabel != null) { + labelSerializer.appendLabel(logLevelLabel, logLevel); + } logger.log( event.getTimeStamp(),