| // SPDX-FileCopyrightText: © 2021 Matthias Andreas Benkard <code@mail.matthias.benkard.de> |
| // |
| // SPDX-License-Identifier: LGPL-3.0-or-later |
| |
| package eu.mulk.quarkus.googlecloud.jsonlogging; |
| |
| import java.util.Collection; |
| |
| /** |
| * A user-supplied provider for {@link Label}s. |
| * |
| * <p>Instances of this interface that are registered with the {@link Formatter} are applied to each |
| * log entry that is logged. |
| * |
| * <p>If you are using the Quarkus extension, any CDI beans registered under this interface are |
| * registered automatically. |
| * |
| * <p><strong>Example:</strong> |
| * |
| * {@snippet : |
| * @Singleton |
| * @Unremovable |
| * public final class RequestIdLabelProvider implements LabelProvider { |
| * |
| * @Override |
| * public Collection<Label> getLabels() { |
| * return List.of(Label.of("requestId", RequestContext.current().getRequestId())); |
| * } |
| * } |
| * } |
| * |
| * <p>Result: |
| * |
| * {@snippet lang="json" : |
| * { |
| * "textPayload": "Request rejected: unauthorized.", |
| * "labels": { |
| * "requestId": "123" |
| * } |
| * } |
| * } |
| * |
| * @see StructuredParameterProvider |
| */ |
| public interface LabelProvider { |
| |
| /** |
| * Provides a collection of {@link Label}s to add to each log entry that is logged. |
| * |
| * <p>If {@link #getLabels(Context)} is implemented, this method is ignored. |
| * |
| * @return a collection of {@link Label}s to add to each log entry that is logged. |
| * @see #getLabels(Context) |
| */ |
| default Collection<Label> getLabels() { |
| return null; |
| } |
| |
| /** |
| * Provides a collection of {@link Label}s to add to each log entry that is logged. |
| * |
| * <p>Delegates to {@link #getLabels()} by default. |
| * |
| * @return a collection of {@link Label}s to add to each log entry that is logged. |
| */ |
| default Collection<Label> getLabels(Context context) { |
| return getLabels(); |
| } |
| |
| /** Contextual data available to {@link #getLabels(Context)}. */ |
| interface Context extends ProviderContext {} |
| } |