This is an automated email from the ASF dual-hosted git repository.

crazyhzm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new e9805bb1a8 [MNG-8512] Fix org.slf4j.simpleLogger.defaultLogLevel 
Configuration conflict (#2042)
e9805bb1a8 is described below

commit e9805bb1a81a4dc0eb5ac93f8a5129741c1b6b41
Author: Jermaine Hua <[email protected]>
AuthorDate: Wed Jan 22 22:39:19 2025 +0800

    [MNG-8512] Fix org.slf4j.simpleLogger.defaultLogLevel Configuration 
conflict (#2042)
    
    Signed-off-by: crazyhzm <[email protected]>
---
 .../maven/cling/logging/impl/MavenSimpleConfiguration.java  | 13 ++++++++++++-
 .../java/org/apache/maven/slf4j/MavenLoggerFactory.java     |  3 ++-
 .../main/java/org/apache/maven/slf4j/MavenSimpleLogger.java |  2 ++
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git 
a/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/impl/MavenSimpleConfiguration.java
 
b/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/impl/MavenSimpleConfiguration.java
index e7fb25b39d..af17432a13 100644
--- 
a/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/impl/MavenSimpleConfiguration.java
+++ 
b/impl/maven-cli/src/main/java/org/apache/maven/cling/logging/impl/MavenSimpleConfiguration.java
@@ -20,7 +20,9 @@
 
 import org.apache.maven.cling.logging.BaseSlf4jConfiguration;
 import org.apache.maven.slf4j.MavenLoggerFactory;
+import org.apache.maven.slf4j.MavenSimpleLogger;
 import org.slf4j.ILoggerFactory;
+import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
@@ -29,6 +31,8 @@
  * @since 3.1.0
  */
 public class MavenSimpleConfiguration extends BaseSlf4jConfiguration {
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(MavenSimpleConfiguration.class);
+
     @Override
     public void setRootLoggerLevel(Level level) {
         String value =
@@ -37,7 +41,14 @@ public void setRootLoggerLevel(Level level) {
                     case INFO -> "info";
                     default -> "error";
                 };
-        System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", value);
+
+        String current = 
System.setProperty(MavenSimpleLogger.DEFAULT_LOG_LEVEL_KEY, value);
+        if (current != null && !value.equalsIgnoreCase(current)) {
+            LOGGER.info(
+                    "System property '" + 
MavenSimpleLogger.DEFAULT_LOG_LEVEL_KEY + "' is already set to '" + current
+                            + "' - ignoring system property and get log level 
from -X/-e/-q options, log level will be set to"
+                            + value);
+        }
     }
 
     @Override
diff --git 
a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
 
b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
index 27dc2ee30a..fb3df18f02 100644
--- 
a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
+++ 
b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
@@ -21,13 +21,14 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
+import org.apache.maven.logging.api.LogLevelRecorder;
 import org.slf4j.ILoggerFactory;
 import org.slf4j.Logger;
 
 /**
  * LogFactory for Maven which can create a simple logger or one which, if set, 
fails the build on a severity threshold.
  */
-public class MavenLoggerFactory implements 
org.apache.maven.logging.api.LogLevelRecorder, ILoggerFactory {
+public class MavenLoggerFactory implements LogLevelRecorder, ILoggerFactory {
     final DefaultLogLevelRecorder logLevelRecorder = new 
DefaultLogLevelRecorder();
     final ConcurrentMap<String, Logger> loggerMap = new ConcurrentHashMap<>();
 
diff --git 
a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenSimpleLogger.java
 
b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenSimpleLogger.java
index 17927d9ec6..9f4e3be251 100644
--- 
a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenSimpleLogger.java
+++ 
b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenSimpleLogger.java
@@ -41,6 +41,8 @@ public class MavenSimpleLogger extends MavenBaseLogger {
 
     static Consumer<String> logSink;
 
+    public static final String DEFAULT_LOG_LEVEL_KEY = 
"org.slf4j.simpleLogger.defaultLogLevel";
+
     public static void setLogSink(Consumer<String> logSink) {
         MavenSimpleLogger.logSink = logSink;
     }

Reply via email to