diff --git a/README.md b/README.md
index 45088a2..f71f2b1 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,8 @@ Include in your `pom.xml`:
## Features
+* Version [3.x](https://github.com/kokuwaio/micronaut-logging/tree/3.x) is based on SLF4J 1.7 & Logback 1.2
+* Version [4.x](https://github.com/kokuwaio/micronaut-logging/tree/4.x) is based on SLF4J 2.0 & Logback 1.4
* [set log level based on MDC values](docs/features/logback_mdc_level.md)
* [add default xml](docs/features/logback_default.md)
* [preconfigured appender for different environments](docs/features/logback_appender.md)
diff --git a/pom.xml b/pom.xml
index fef007e..4ba4f1f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
io.kokuwa.micronaut
micronaut-logging
- 3.0.6-SNAPSHOT
+ 4.0.0-SNAPSHOT
Logging Support for Micronaut
Enhanced logging using MDC or request header.
@@ -105,9 +105,10 @@
- 1.2.11
+ 1.4.0
0.1.5
3.6.1
+ 2.0.0
@@ -123,6 +124,13 @@
import
+
+
+ org.slf4j
+ slf4j-api
+ ${version.org.slf4j.api}
+
+
ch.qos.logback
diff --git a/src/main/java/io/kokuwa/micronaut/logging/configurator/DefaultConfigurator.java b/src/main/java/io/kokuwa/micronaut/logging/configurator/DefaultConfigurator.java
index 1d808a9..f3ecb7d 100644
--- a/src/main/java/io/kokuwa/micronaut/logging/configurator/DefaultConfigurator.java
+++ b/src/main/java/io/kokuwa/micronaut/logging/configurator/DefaultConfigurator.java
@@ -14,12 +14,12 @@ import ch.qos.logback.core.spi.ContextAwareBase;
public class DefaultConfigurator extends ContextAwareBase implements Configurator {
@Override
- public void configure(LoggerContext loggerContext) {
+ public ExecutionStatus configure(LoggerContext loggerContext) {
var base = DefaultConfigurator.class.getResource("/io/kokuwa/logback/logback-default.xml");
if (base == null) {
addError("Failed to find logback.xml from io.kokuwa:micronaut-logging");
- return;
+ return ExecutionStatus.NEUTRAL;
}
try {
@@ -29,8 +29,10 @@ public class DefaultConfigurator extends ContextAwareBase implements Configurato
configurator.doConfigure(base);
} catch (JoranException e) {
addError("Failed to load logback.xml from io.kokuwa:micronaut-logging", e);
+ return ExecutionStatus.NEUTRAL;
}
loggerContext.getLogger("io.micronaut.logging.PropertiesLoggingLevelsConfigurer").setLevel(Level.WARN);
+ return ExecutionStatus.DO_NOT_INVOKE_NEXT_IF_ANY;
}
}
diff --git a/src/main/java/io/kokuwa/micronaut/logging/configurator/MicronautJoranConfigurator.java b/src/main/java/io/kokuwa/micronaut/logging/configurator/MicronautJoranConfigurator.java
index f89db16..a1010d7 100644
--- a/src/main/java/io/kokuwa/micronaut/logging/configurator/MicronautJoranConfigurator.java
+++ b/src/main/java/io/kokuwa/micronaut/logging/configurator/MicronautJoranConfigurator.java
@@ -12,8 +12,8 @@ import ch.qos.logback.core.joran.spi.RuleStore;
public class MicronautJoranConfigurator extends JoranConfigurator {
@Override
- public void addInstanceRules(RuleStore rs) {
- super.addInstanceRules(rs);
- rs.addRule(new ElementSelector("configuration/root/autoAppender"), new RootAutoSelectAppenderAction());
+ public void addElementSelectorAndActionAssociations(RuleStore rs) {
+ super.addElementSelectorAndActionAssociations(rs);
+ rs.addRule(new ElementSelector("configuration/root/autoAppender"), () -> new RootAutoSelectAppenderAction());
}
}
diff --git a/src/main/java/io/kokuwa/micronaut/logging/configurator/RootAutoSelectAppenderAction.java b/src/main/java/io/kokuwa/micronaut/logging/configurator/RootAutoSelectAppenderAction.java
index b490a35..9e229b4 100644
--- a/src/main/java/io/kokuwa/micronaut/logging/configurator/RootAutoSelectAppenderAction.java
+++ b/src/main/java/io/kokuwa/micronaut/logging/configurator/RootAutoSelectAppenderAction.java
@@ -8,9 +8,9 @@ import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.joran.JoranConstants;
import ch.qos.logback.core.joran.action.Action;
-import ch.qos.logback.core.joran.action.ActionConst;
-import ch.qos.logback.core.joran.spi.InterpretationContext;
+import ch.qos.logback.core.joran.spi.SaxEventInterpretationContext;
import io.micronaut.core.util.StringUtils;
/**
@@ -29,9 +29,9 @@ public class RootAutoSelectAppenderAction extends Action {
private static final String LOGBACK_APPENDER = "LOGBACK_APPENDER";
@Override
- public void begin(InterpretationContext ic, String name, Attributes attributes) {
+ public void begin(SaxEventInterpretationContext ic, String name, Attributes attributes) {
- var rootLogger = LoggerContext.class.cast(context).getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
+ var rootLogger = LoggerContext.class.cast(ic).getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
var rootLoggerAppenders = rootLogger.iteratorForAppenders();
if (rootLoggerAppenders.hasNext()) {
addWarn("Skip because appender already found: " + rootLoggerAppenders.next().getName());
@@ -53,12 +53,11 @@ public class RootAutoSelectAppenderAction extends Action {
}
@Override
- public void end(InterpretationContext ic, String name) {}
+ public void end(SaxEventInterpretationContext ic, String name) {}
- private boolean setAppender(InterpretationContext ic, Logger rootLogger, String appenderName) {
+ private boolean setAppender(SaxEventInterpretationContext ic, Logger rootLogger, String appenderName) {
- @SuppressWarnings("unchecked")
- var appenderBag = (Map>) ic.getObjectMap().get(ActionConst.APPENDER_BAG);
+ var appenderBag = (Map>) ic.getContext().getObject(JoranConstants.APPENDER_BAG);
var appender = appenderBag.get(appenderName);
if (appender == null) {
addError("Could not find an appender named [" + appenderName