// SPDX-FileCopyrightText: © 2021 Matthias Andreas Benkard // // SPDX-License-Identifier: LGPL-3.0-or-later package eu.mulk.quarkus.googlecloud.jsonlogging; import java.util.Objects; /** * A label usable to tag a log message. * *

Instances of {@link Label} can be passed as log parameters to the {@code *f} family of logging * functions on {@link org.jboss.logging.Logger}. * *

Example: * * {@snippet : * logger.logf("Request rejected: unauthorized.", Label.of("requestId", "123")); * } * *

Result: * * {@snippet lang="json" : * { * "textPayload": "Request rejected: unauthorized.", * "labels": { * "requestId": "123" * } * } * } * * @see KeyValueParameter * @see StructuredParameter */ public final class Label { private final String key; private final String value; private Label(String key, String value) { this.key = key; this.value = value; } /** * Constructs a {@link Label} from a key (i.e. name) and a value. * *

It is often useful for the key to be a {@link String} constant that is shared by multiple * parts of the program. * * @param key the key (name) of the label. * @param value the value of the label. * @return the newly constructed {@link Label}, ready to be passed to a logging function. */ public static Label of(String key, String value) { return new Label(key, value); } /** * The name of the label. * *

It is often useful for this to be a {@link String} constant that is shared by multiple parts * of the program. * * @return the name of the label. */ public String key() { return key; } /** * The value of the label. * * @return the value of the label. */ public String value() { return value; } @Override public boolean equals(Object obj) { if (obj == this) return true; if (obj == null || obj.getClass() != this.getClass()) return false; var that = (Label) obj; return Objects.equals(this.key, that.key) && Objects.equals(this.value, that.value); } @Override public int hashCode() { return Objects.hash(key, value); } @Override public String toString() { return "Label[" + "key=" + key + ", " + "value=" + value + ']'; } }