diff options
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.java | 39 |
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; + } + } } |