Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.io.StringWriter;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Formatter;
Expand Down Expand Up @@ -68,6 +69,14 @@ public static JsonFormatter getJsonFormatter() {
}

protected void testLogOutput() throws Exception {
testLogOutput(false);
}

protected void testLogOutputWithSourceFields() throws Exception {
testLogOutput(true);
}

private void testLogOutput(boolean includeSourceFields) throws Exception {
JsonFormatter jsonFormatter = getJsonFormatter();

org.slf4j.Logger log = LoggerFactory.getLogger("JsonStructuredTest");
Expand All @@ -88,7 +97,7 @@ protected void testLogOutput() throws Exception {
JsonNode jsonNode = mapper.readValue(lines[0], JsonNode.class);
Assertions.assertTrue(jsonNode.isObject());

List<String> expectedFields = Arrays.asList(
List<String> expectedFields = new ArrayList<>(Arrays.asList(
"timestamp",
"sequence",
"loggerClassName",
Expand All @@ -106,7 +115,15 @@ protected void testLogOutput() throws Exception {
"errorMessage",
"arg0",
"structuredKey",
"serviceName");
"serviceName"));
if (includeSourceFields) {
expectedFields.addAll(expectedFields.indexOf("errorMessage") + 1, Arrays.asList(
"sourceClassName",
"sourceMethodName",
"sourceFileName",
"sourceLineNumber"));
}

Assertions.assertEquals(expectedFields, ImmutableList.copyOf(jsonNode.fieldNames()));

String timestamp = jsonNode.findValue("timestamp").asText();
Expand Down Expand Up @@ -163,5 +180,20 @@ protected void testLogOutput() throws Exception {

Assertions.assertTrue(jsonNode.findValue("serviceName").isTextual());
Assertions.assertEquals("deployment-test", jsonNode.findValue("serviceName").asText());

if (includeSourceFields) {
Assertions.assertTrue(jsonNode.findValue("sourceClassName").isTextual());
Assertions.assertEquals(JsonDefaultFormatterBaseTest.class.getName(),
jsonNode.findValue("sourceClassName").asText());

Assertions.assertTrue(jsonNode.findValue("sourceMethodName").isTextual());
Assertions.assertEquals("testLogOutput", jsonNode.findValue("sourceMethodName").asText());

Assertions.assertTrue(jsonNode.findValue("sourceFileName").isTextual());
Assertions.assertEquals("JsonDefaultFormatterBaseTest.java", jsonNode.findValue("sourceFileName").asText());

Assertions.assertTrue(jsonNode.findValue("sourceLineNumber").isInt());
Assertions.assertEquals(86, jsonNode.findValue("sourceLineNumber").asInt());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.quarkiverse.loggingjson.deployment;

import java.util.Collections;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.test.QuarkusUnitTest;

class JsonDefaultFormatterSourceFieldsJacksonTest extends JsonDefaultFormatterBaseTest {

@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class))
.setForcedDependencies(Collections.singletonList(
new AppArtifact("io.quarkus", "quarkus-jackson", System.getProperty("test.quarkus.version"))))
.withConfigurationResource("application-json-source-fields.properties");

@Test
void testFormatterUsingJackson() throws Exception {
testLogOutputWithSourceFields();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.quarkiverse.loggingjson.deployment;

import java.util.Collections;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.test.QuarkusUnitTest;

class JsonDefaultFormatterSourceFieldsJsonbTest extends JsonDefaultFormatterBaseTest {

@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class))
.setForcedDependencies(Collections.singletonList(
new AppArtifact("io.quarkus", "quarkus-jsonb", System.getProperty("test.quarkus.version"))))
.withConfigurationResource("application-json-source-fields.properties");

@Test
void testFormatterUsingJsonb() throws Exception {
testLogOutputWithSourceFields();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.io.StringWriter;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.*;
Expand Down Expand Up @@ -64,6 +65,14 @@ protected String[] logLines() {
}

protected void testLogOutput() throws Exception {
testLogOutput(false);
}

protected void testLogOutputWithSourceFields() throws Exception {
testLogOutput(true);
}

protected void testLogOutput(boolean includeSourceFields) throws Exception {
JsonFormatter jsonFormatter = getJsonFormatter();

org.slf4j.Logger log = LoggerFactory.getLogger("JsonStructuredTest");
Expand All @@ -84,7 +93,7 @@ protected void testLogOutput() throws Exception {
JsonNode jsonNode = mapper.readValue(lines[0], JsonNode.class);
Assertions.assertTrue(jsonNode.isObject());

List<String> expectedFields = Arrays.asList(
List<String> expectedFields = new ArrayList<>(Arrays.asList(
"@timestamp",
"log.logger",
"log.level",
Expand All @@ -99,7 +108,14 @@ protected void testLogOutput() throws Exception {
"structuredKey",
"service.name",
"message",
"ecs.version");
"ecs.version"));
if (includeSourceFields) {
expectedFields.addAll(expectedFields.indexOf("log.level") + 1, Arrays.asList(
"log.origin.file.name",
"log.origin.file.line",
"log.origin.function"));
}

Assertions.assertEquals(expectedFields, ImmutableList.copyOf(jsonNode.fieldNames()));

String timestamp = jsonNode.findValue("@timestamp").asText();
Expand Down Expand Up @@ -149,5 +165,16 @@ protected void testLogOutput() throws Exception {

Assertions.assertTrue(jsonNode.findValue("ecs.version").isTextual());
Assertions.assertTrue(jsonNode.findValue("ecs.version").asText().matches("^[0-9]*\\.[0-9]*\\.[0-9]*$"));

if (includeSourceFields) {
Assertions.assertTrue(jsonNode.findValue("log.origin.function").isTextual());
Assertions.assertEquals("testLogOutput", jsonNode.findValue("log.origin.function").asText());

Assertions.assertTrue(jsonNode.findValue("log.origin.file.name").isTextual());
Assertions.assertEquals("JsonECSFormatterBaseTest.java", jsonNode.findValue("log.origin.file.name").asText());

Assertions.assertTrue(jsonNode.findValue("log.origin.file.line").isInt());
Assertions.assertEquals(86, jsonNode.findValue("log.origin.file.line").asInt());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.quarkiverse.loggingjson.deployment;

import java.util.Collections;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.test.QuarkusUnitTest;

class JsonECSFormatterSourceFieldsJacksonTest extends JsonECSFormatterBaseTest {

@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class))
.setForcedDependencies(Collections.singletonList(
new AppArtifact("io.quarkus", "quarkus-jackson-deployment", System.getProperty("test.quarkus.version"))))
.withConfigurationResource("application-json-source-fields-ecs.properties");

@Test
void testFormatterUsingJackson() throws Exception {
testLogOutputWithSourceFields();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.quarkiverse.loggingjson.deployment;

import java.util.Collections;

import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

import io.quarkus.bootstrap.model.AppArtifact;
import io.quarkus.test.QuarkusUnitTest;

class JsonECSFormatterSourceFieldsJsonbTest extends JsonECSFormatterBaseTest {

@RegisterExtension
static final QuarkusUnitTest config = new QuarkusUnitTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class))
.setForcedDependencies(Collections.singletonList(
new AppArtifact("io.quarkus", "quarkus-jsonb-deployment", System.getProperty("test.quarkus.version"))))
.withConfigurationResource("application-json-source-fields-ecs.properties");

@Test
void testFormatterUsingJsonb() throws Exception {
testLogOutputWithSourceFields();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
quarkus.log.level=INFO
quarkus.log.console.enable=true
quarkus.log.console.level=WARNING
quarkus.log.json.console.enable=true
quarkus.log.json.log-format=ecs
quarkus.log.json.fields.arguments.include-non-structured-arguments=true
quarkus.log.json.additional-field."service.name".value=deployment-test

# these fields are disabled by default
quarkus.log.json.fields.source-method-name.enabled=true
quarkus.log.json.fields.source-file-name.enabled=true
quarkus.log.json.fields.source-line-number.enabled=true
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
quarkus.log.level=INFO
quarkus.log.console.enable=true
quarkus.log.console.level=WARNING
quarkus.log.json.console.enable=true
quarkus.log.json.fields.arguments.include-non-structured-arguments=true
quarkus.log.json.additional-field.serviceName.value=deployment-test
quarkus.log.json.file.enable=true

# these fields are disabled by default
quarkus.log.json.fields.source-class-name.enabled=true
quarkus.log.json.fields.source-method-name.enabled=true
quarkus.log.json.fields.source-file-name.enabled=true
quarkus.log.json.fields.source-line-number.enabled=true
Loading