Skip to content
This repository was archived by the owner on Sep 22, 2025. It is now read-only.

Commit 036082e

Browse files
author
Michael Edwards
committed
Merge branch 'streamable' into benchmark-streamable
2 parents 4d2356e + bb3d5aa commit 036082e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

layout/src/main/java/com/vlkan/log4j2/logstash/layout/resolver/MessageResolver.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.vlkan.log4j2.logstash.layout.resolver;
22

3+
import com.fasterxml.jackson.core.JsonGenerator;
34
import com.fasterxml.jackson.databind.JsonNode;
45
import com.fasterxml.jackson.databind.node.NullNode;
56
import com.fasterxml.jackson.databind.node.ObjectNode;
67
import com.fasterxml.jackson.databind.node.TextNode;
8+
import com.fasterxml.jackson.databind.util.TokenBuffer;
9+
import com.vlkan.log4j2.logstash.layout.util.Streamable;
710
import org.apache.commons.lang3.StringUtils;
811
import org.apache.logging.log4j.core.LogEvent;
912
import org.apache.logging.log4j.message.Message;
@@ -49,6 +52,15 @@ private static JsonNode resolveText(TemplateResolverContext context, Message mes
4952
}
5053

5154
private static JsonNode resolveJson(TemplateResolverContext context, Message message) {
55+
if (message instanceof Streamable) {
56+
try {
57+
TokenBuffer buffer = new TokenBuffer(context.getObjectMapper(), false);
58+
((Streamable) message).streamTo(buffer);
59+
return context.getObjectMapper().readTree(buffer.asParser());
60+
} catch (IOException error) {
61+
throw new RuntimeException("JSON Streamable failure", error);
62+
}
63+
}
5264

5365
// Check message type.
5466
if (!(message instanceof MultiformatMessage)) {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.vlkan.log4j2.logstash.layout.util;
2+
3+
import com.fasterxml.jackson.core.JsonGenerator;
4+
import java.io.IOException;
5+
6+
public interface Streamable {
7+
public abstract void streamTo(JsonGenerator stream) throws IOException;
8+
}

0 commit comments

Comments
 (0)