diff --git a/quarkus/config-api/pom.xml b/quarkus/config-api/pom.xml
index b7a56a626d9..4c4b20043d3 100755
--- a/quarkus/config-api/pom.xml
+++ b/quarkus/config-api/pom.xml
@@ -40,6 +40,10 @@
org.infinispan
infinispan-commons
+
+ io.quarkus
+ quarkus-opentelemetry
+
diff --git a/quarkus/config-api/src/main/java/org/keycloak/config/LoggingOptions.java b/quarkus/config-api/src/main/java/org/keycloak/config/LoggingOptions.java
index 31d3aeaa49e..85bd81e45cf 100644
--- a/quarkus/config-api/src/main/java/org/keycloak/config/LoggingOptions.java
+++ b/quarkus/config-api/src/main/java/org/keycloak/config/LoggingOptions.java
@@ -5,8 +5,11 @@ import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Set;
+import java.util.function.Function;
import java.util.function.Predicate;
+import static java.lang.String.format;
+
public class LoggingOptions {
public static final Handler DEFAULT_LOG_HANDLER = Handler.console;
@@ -17,6 +20,12 @@ public class LoggingOptions {
public static final String DEFAULT_LOG_PATH = "data" + File.separator + "log" + File.separator + DEFAULT_LOG_FILENAME;
public static final Boolean GELF_ACTIVATED = isGelfActivated();
+ // Log format + tracing
+ private static final Function DEFAULT_LOG_FORMAT_FUNC = (additionalFields) ->
+ "%d{yyyy-MM-dd HH:mm:ss,SSS} " + additionalFields + "%-5p [%c] (%t) %s%e%n";
+ public static final String DEFAULT_LOG_FORMAT = DEFAULT_LOG_FORMAT_FUNC.apply("");
+ public static final String DEFAULT_LOG_TRACING_FORMAT = DEFAULT_LOG_FORMAT_FUNC.apply("traceId=%X{traceId}, parentId=%X{parentId}, spanId=%X{spanId}, sampled=%X{sampled} ");
+
public enum Handler {
console,
file,
@@ -91,7 +100,13 @@ public class LoggingOptions {
public static final Option LOG_CONSOLE_FORMAT = new OptionBuilder<>("log-console-format", String.class)
.category(OptionCategory.LOGGING)
.description("The format of unstructured console log entries. If the format has spaces in it, escape the value using \"\".")
- .defaultValue("%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n")
+ .defaultValue(DEFAULT_LOG_FORMAT)
+ .build();
+
+ public static final Option LOG_CONSOLE_INCLUDE_TRACE = new OptionBuilder<>("log-console-include-trace", Boolean.class)
+ .category(OptionCategory.LOGGING)
+ .description(format("Include tracing information in the console log. If the '%s' option is specified, this option has no effect.", LOG_CONSOLE_FORMAT.getKey()))
+ .defaultValue(true)
.build();
public static final Option LOG_CONSOLE_COLOR = new OptionBuilder<>("log-console-color", Boolean.class)
@@ -120,7 +135,13 @@ public class LoggingOptions {
public static final Option LOG_FILE_FORMAT = new OptionBuilder<>("log-file-format", String.class)
.category(OptionCategory.LOGGING)
.description("Set a format specific to file log entries.")
- .defaultValue("%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n")
+ .defaultValue(DEFAULT_LOG_FORMAT)
+ .build();
+
+ public static final Option LOG_FILE_INCLUDE_TRACE = new OptionBuilder<>("log-file-include-trace", Boolean.class)
+ .category(OptionCategory.LOGGING)
+ .description(format("Include tracing information in the file log. If the '%s' option is specified, this option has no effect.", LOG_FILE_FORMAT.getKey()))
+ .defaultValue(true)
.build();
public static final Option