blob: c233158d9440d495cb92ddafe1a5c5b2b8d669ab [file] [log] [blame]
Matthias Andreas Benkard80909242022-02-03 20:47:47 +01001// SPDX-FileCopyrightText: © 2021 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +02005package eu.mulk.quarkus.googlecloud.jsonlogging;
6
7import javax.json.JsonObjectBuilder;
8
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +02009/**
10 * A structured parameter usable as logging payload.
11 *
12 * <p>Any instance of {@link StructuredParameter} can be passed as a log parameter to the {@code *f}
13 * family of logging functions on {@link org.jboss.logging.Logger}.
14 *
15 * <p>Example:
16 *
Matthias Andreas Benkarde369c512022-04-15 20:54:52 +020017 * {@snippet :
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020018 * StructuredParameter p1 = ...;
19 * StructuredParameter p2 = ...;
20 *
21 * logger.logf("Something interesting happened.", p1, p2);
Matthias Andreas Benkarde369c512022-04-15 20:54:52 +020022 * }
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020023 *
24 * @see KeyValueParameter
25 * @see Label
26 */
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +020027public interface StructuredParameter {
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020028
29 /**
Matthias Andreas Benkard42da9f12021-09-02 18:47:28 +020030 * The JSON to be embedded in the payload of the log entry.
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020031 *
32 * <p>May contain multiple keys and values as well as nested objects. Each top-level entry of the
Matthias Andreas Benkard42da9f12021-09-02 18:47:28 +020033 * returned object is embedded as a top-level entry in the payload of the log entry.
34 *
35 * @return A {@link JsonObjectBuilder} holding a set of key–value pairs.
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020036 */
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +020037 JsonObjectBuilder json();
38}