summaryrefslogtreecommitdiff
path: root/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java')
-rw-r--r--core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java39
1 files changed, 37 insertions, 2 deletions
diff --git a/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java b/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java
index f6167f6..c4e36de 100644
--- a/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java
+++ b/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/Formatter.java
@@ -99,15 +99,17 @@ public class Formatter extends ExtFormatter {
List<StructuredParameter> parameters = new ArrayList<>();
Map<String, String> labels = new HashMap<>();
+ var providerContext = new ProviderContext(logRecord);
+
for (var parameterProvider : parameterProviders) {
- var parameter = parameterProvider.getParameter();
+ var parameter = parameterProvider.getParameter(providerContext);
if (parameter != null) {
parameters.add(parameter);
}
}
for (var labelProvider : labelProviders) {
- var providedLabels = labelProvider.getLabels();
+ var providedLabels = labelProvider.getLabels(providerContext);
if (providedLabels != null) {
for (var label : providedLabels) {
labels.put(label.key(), label.value());
@@ -185,4 +187,37 @@ public class Formatter extends ExtFormatter {
return ERROR_LEVEL;
}
}
+
+ /**
+ * An implementation of {@link LabelProvider.Context} and {@link
+ * StructuredParameterProvider.Context}.
+ */
+ private static class ProviderContext
+ implements LabelProvider.Context, StructuredParameterProvider.Context {
+
+ private final String loggerName;
+ private final long sequenceNumber;
+ private final String threadName;
+
+ private ProviderContext(ExtLogRecord logRecord) {
+ loggerName = logRecord.getLoggerName();
+ sequenceNumber = logRecord.getSequenceNumber();
+ threadName = logRecord.getThreadName();
+ }
+
+ @Override
+ public String loggerName() {
+ return loggerName;
+ }
+
+ @Override
+ public long sequenceNumber() {
+ return sequenceNumber;
+ }
+
+ @Override
+ public String threadName() {
+ return threadName;
+ }
+ }
}