blob: cacfea6036577133efa3174f374be429257de50f [file] [log] [blame]
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +02001package eu.mulk.quarkus.googlecloud.jsonlogging;
2
3/**
4 * A user-supplied provider for {@link StructuredParameter}s.
5 *
6 * <p>Any CDI beans registered under this class are applied to each log entry that is logged.
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +02007 *
Matthias Andreas Benkard42da9f12021-09-02 18:47:28 +02008 * <p><strong>Example:</strong>
9 *
10 * <pre>{@code
11 * @Singleton
12 * @Unremovable
13 * public final class TraceLogParameterProvider implements StructuredParameterProvider {
14 *
15 * @Override
16 * public StructuredParameter getParameter() {
17 * var b = Json.createObjectBuilder();
18 * b.add("traceId", Span.current().getSpanContext().getTraceId());
19 * b.add("spanId", Span.current().getSpanContext().getSpanId());
20 * return () -> b;
21 * }
22 * }
23 * }</pre>
24 *
25 * Result:
26 *
27 * <pre>{@code
28 * {
29 * "jsonPayload": {
30 * "message": "Request rejected: unauthorized.",
31 * "traceId": "39f9a49a9567a8bd7087b708f8932550",
32 * "spanId": "c7431b14630b633d"
33 * }
34 * }
35 * }</pre>
36 *
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020037 * @see LabelProvider
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +020038 */
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020039public interface StructuredParameterProvider {
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +020040
Matthias Andreas Benkard42da9f12021-09-02 18:47:28 +020041 /**
42 * Provides a {@link StructuredParameter} to add to each log entry that is logged.
43 *
44 * <p>It is often useful to return a custom {@link StructuredParameter} rather than a {@link
45 * KeyValueParameter} from this method. This way multiple key–value pairs can be generated by a
46 * single invocation.
47 *
48 * @return a {@link StructuredParameter} to add to each log entry that is logged.
49 */
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020050 StructuredParameter getParameter();
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +020051}