blob: 79e928808ec54ff4e4bff97e8bea13773fc1170f [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 Benkard348f2052022-01-15 16:13:01 +01005package eu.mulk.quarkus.googlecloud.jsonlogging.logmanager;
6
7import eu.mulk.quarkus.googlecloud.jsonlogging.Formatter;
8import java.util.logging.Handler;
9import org.jboss.logmanager.EmbeddedConfigurator;
10import org.jboss.logmanager.handlers.ConsoleHandler;
11
12/**
Matthias Andreas Benkardddcce2e2023-09-24 12:57:37 +020013 * A convenient {@link EmbeddedConfigurator} for JBoss Log Manager Embedded (1.1.x and earlier).
Matthias Andreas Benkard348f2052022-01-15 16:13:01 +010014 *
15 * <p>You can register this class through the {@link java.util.ServiceLoader} mechanism as a
16 * provider of the {@link EmbeddedConfigurator} interface (under the name of {@code
17 * org.jboss.logmanager.EmbeddedConfigurator}) to automatically register a {@link ConsoleHandler}
18 * using {@link Formatter} as the default log output method for the application.
19 */
20public final class DefaultEmbeddedConfigurator implements EmbeddedConfigurator {
21
22 private final Handler[] rootHandlers;
23
24 /**
25 * Constructs a JBoss Log Manager configuration that uses {@link Formatter} and {@link
26 * ConsoleHandler} for log output.
27 */
Matthias Andreas Benkardddcce2e2023-09-24 12:57:37 +020028 @SuppressWarnings({"java:S2095", "resource"})
Matthias Andreas Benkard348f2052022-01-15 16:13:01 +010029 public DefaultEmbeddedConfigurator() {
30 rootHandlers = new Handler[] {createConsoleHandler()};
31 }
32
33 /**
34 * Creates a {@link ConsoleHandler} that uses {@link Formatter} for formatting.
35 *
36 * @return a preconfigured {@link ConsoleHandler}.
37 */
38 public static ConsoleHandler createConsoleHandler() {
39 return new DefaultConsoleHandler();
40 }
41
42 @Override
43 public Handler[] getHandlersOf(String loggerName) {
44 if (loggerName.isEmpty()) {
45 return rootHandlers;
46 } else {
47 return EmbeddedConfigurator.NO_HANDLERS;
48 }
49 }
50}