diff --git a/pom.xml b/pom.xml
index adb5d81..b5b8087 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,14 +64,13 @@
17
17
-
- 1C
+ class
- 4.1.0
+ 4.1.1
diff --git a/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java b/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java
index 5dfab9a..7f4b176 100644
--- a/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java
+++ b/src/main/java/io/kokuwa/micronaut/logging/mdc/MDCTurboFilterConfigurer.java
@@ -1,5 +1,6 @@
package io.kokuwa.micronaut.logging.mdc;
+import java.util.Collection;
import java.util.Set;
import org.slf4j.Logger;
@@ -13,33 +14,58 @@ import io.micronaut.context.annotation.Requires;
import io.micronaut.context.env.Environment;
import io.micronaut.core.type.Argument;
import io.micronaut.core.util.StringUtils;
+import io.micronaut.logging.LogLevel;
+import io.micronaut.logging.LoggingSystem;
/**
* Configure MDC filter.
*
* @author Stephan Schnabel
*/
+@BootstrapContextCompatible
@Requires(beans = LogbackUtil.class)
@Requires(property = MDCTurboFilterConfigurer.PREFIX)
@Requires(property = MDCTurboFilterConfigurer.PREFIX + ".enabled", notEquals = StringUtils.FALSE)
-@BootstrapContextCompatible
@Context
-public class MDCTurboFilterConfigurer {
+public class MDCTurboFilterConfigurer implements LoggingSystem {
public static final String PREFIX = "logger.mdc";
private static final Logger log = LoggerFactory.getLogger(MDCTurboFilterConfigurer.class);
+
private final LogbackUtil logback;
private final Environment environment;
+ private Collection mdcs = Set.of();
+ private boolean initialized;
+
public MDCTurboFilterConfigurer(LogbackUtil logback, Environment environment) {
this.logback = logback;
this.environment = environment;
- configure();
+ this.refresh();
}
- public void configure() {
- for (var name : environment.getPropertyEntries(PREFIX)) {
+ @Override
+ public void refresh() {
+
+ mdcs = environment.getPropertyEntries(PREFIX);
+ initialized = false;
+
+ if (environment.getProperties("logger.levels").isEmpty()) {
+ log.warn("MDCs are configured, but no levels are set. MDC may not work.");
+ }
+ }
+
+ @Override
+ public void setLogLevel(String name, LogLevel level) {
+ if (!initialized) {
+ configure();
+ initialized = true;
+ }
+ }
+
+ private void configure() {
+ for (var name : mdcs) {
var prefix = PREFIX + "." + name + ".";
var key = environment.getProperty(prefix + "key", String.class, name);
diff --git a/src/test/resources/application-test-mdc.yaml b/src/test/resources/application-test-mdc.yaml
index c0fd2a2..69cbc89 100644
--- a/src/test/resources/application-test-mdc.yaml
+++ b/src/test/resources/application-test-mdc.yaml
@@ -1,4 +1,6 @@
logger:
+ levels:
+ io.micronaut.logging.PropertiesLoggingLevelsConfigurer: "OFF"
mdc:
key1:
key: key