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 @@
     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 @@
       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;
+    }
+  }
 }
