From f548d198afdb8897efb00778f56e933408e9bbc6 Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Fri, 2 Sep 2022 11:07:01 +0200 Subject: [PATCH] Update to version 4.x and update to SLF4J 2.x and Logback 1.4 --- README.md | 2 ++ pom.xml | 12 ++++++++++-- .../logging/configurator/DefaultConfigurator.java | 6 ++++-- .../configurator/MicronautJoranConfigurator.java | 6 +++--- .../RootAutoSelectAppenderAction.java | 15 +++++++-------- 5 files changed, 26 insertions(+), 15 deletions(-) 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