blob: a26f4da9549f3455d17574f8ed4922824fabf6b9 [file] [log] [blame]
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +02001package eu.mulk.quarkus.googlecloud.jsonlogging;
2
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +02003import io.quarkus.arc.Arc;
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +02004import io.quarkus.runtime.RuntimeValue;
5import io.quarkus.runtime.annotations.Recorder;
6import java.util.Optional;
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +02007import java.util.stream.Collectors;
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +02008
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +02009/** A Quarkus recorder that registers {@link Formatter} as a log formatter for the application. */
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +020010@Recorder
11public class GoogleCloudJsonLoggingRecorder {
12 public RuntimeValue<Optional<java.util.logging.Formatter>> initialize() {
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020013
Matthias Andreas Benkard82d7e442021-08-29 08:34:11 +020014 var parameterProviders =
Matthias Andreas Benkard692f48d2021-08-31 21:06:50 +020015 Arc.container().select(StructuredParameterProvider.class).stream()
16 .collect(Collectors.toList());
17
18 var labelProviders =
19 Arc.container().select(LabelProvider.class).stream().collect(Collectors.toList());
20
21 return new RuntimeValue<>(Optional.of(new Formatter(parameterProviders, labelProviders)));
Matthias Andreas Benkardb8fbc372021-05-11 06:50:45 +020022 }
23}