summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-01-22 15:37:18 +0100
committerMorten Tokle <mortent@verizonmedia.com>2021-01-22 15:37:18 +0100
commitb510834af37d4baf64c2d13d06afdd105824d1fc (patch)
tree0410344cd46d9c76a75705ad0479db472dd3a409 /jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java
parent5ca33058e2652c9be23dfb38975280a575843f3a (diff)
Move log formatting to writer thread
Diffstat (limited to 'jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java19
1 files changed, 5 insertions, 14 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java
index e813b1bf4e1..54ac284c6c8 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/JSONFormatter.java
@@ -9,6 +9,7 @@ import com.yahoo.yolean.trace.TraceNode;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
import java.security.Principal;
import java.util.Collection;
import java.util.Objects;
@@ -20,7 +21,7 @@ import java.util.logging.Logger;
*
* @author frodelu
*/
-public class JSONFormatter {
+public class JSONFormatter implements LogWriter<RequestLogEntry> {
private static final String COVERAGE = "coverage";
private static final String COVERAGE_COVERAGE = "coverage";
private static final String COVERAGE_DOCUMENTS = "documents";
@@ -38,15 +39,9 @@ public class JSONFormatter {
generatorFactory = new JsonFactory(new ObjectMapper());
}
- /**
- * The main method for formatting the associated {@link RequestLogEntry} as a Vespa JSON access log string
- *
- * @return The Vespa JSON access log string without trailing newline
- */
- public String format(RequestLogEntry entry) {
- ByteArrayOutputStream logLine = new ByteArrayOutputStream();
- try {
- JsonGenerator generator = generatorFactory.createGenerator(logLine, JsonEncoding.UTF8);
+ @Override
+ public void write(RequestLogEntry entry, OutputStream outputStream) throws IOException {
+ try (JsonGenerator generator = generatorFactory.createGenerator(outputStream, JsonEncoding.UTF8)){
generator.writeStartObject();
String peerAddress = entry.peerAddress().get();
generator.writeStringField("ip", peerAddress);
@@ -152,13 +147,9 @@ public class JSONFormatter {
}
generator.writeEndObject();
- generator.close();
-
} catch (IOException e) {
logger.log(Level.WARNING, "Unable to generate JSON access log entry: " + e.getMessage(), e);
}
-
- return logLine.toString();
}