9baf7da
From a59ddba0d41b0ba1ea9c8c6ac541a71d737cdf30 Mon Sep 17 00:00:00 2001
fb99c98
From: Michael Simacek <msimacek@redhat.com>
fb99c98
Date: Tue, 6 Jun 2017 13:47:43 +0200
9baf7da
Subject: [PATCH 2/3] Invoke logback via reflection
fb99c98
fb99c98
---
9baf7da
 .../cli/logging/impl/LogbackConfiguration.java | 18 +++++++++++++-----
9baf7da
 1 file changed, 13 insertions(+), 5 deletions(-)
fb99c98
fb99c98
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
9baf7da
index 4dc5a37b8..a977ba085 100644
fb99c98
--- a/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
fb99c98
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/logging/impl/LogbackConfiguration.java
9baf7da
@@ -31,21 +31,29 @@
9baf7da
 public class LogbackConfiguration extends BaseSlf4jConfiguration {
fb99c98
     @Override
9baf7da
     public void setRootLoggerLevel(Level level) {
fb99c98
-        ch.qos.logback.classic.Level value;
fb99c98
+        String value;
9baf7da
         switch (level) {
fb99c98
             case DEBUG:
fb99c98
-                value = ch.qos.logback.classic.Level.DEBUG;
fb99c98
+                value = "DEBUG";
fb99c98
                 break;
fb99c98
 
fb99c98
             case INFO:
fb99c98
-                value = ch.qos.logback.classic.Level.INFO;
fb99c98
+                value = "INFO";
fb99c98
                 break;
fb99c98
 
fb99c98
             default:
fb99c98
-                value = ch.qos.logback.classic.Level.ERROR;
fb99c98
+                value = "ERROR";
fb99c98
                 break;
fb99c98
         }
9baf7da
-        ((ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)).setLevel(value);
9baf7da
+        Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
fb99c98
+        try {
fb99c98
+            Class levelClass = Class.forName("ch.qos.logback.classic.Level");
fb99c98
+            Object logbackLevel = levelClass.getField(value).get(null);
fb99c98
+            Class loggerClass = Class.forName("ch.qos.logback.classic.Logger");
9baf7da
+            loggerClass.getMethod("setLevel", new Class[] {levelClass}).invoke(logger, new Object[] {logbackLevel});
fb99c98
+        } catch (Exception e) {
fb99c98
+            throw new RuntimeException("Failed to initialize logback configuration", e);
fb99c98
+        }
fb99c98
     }
fb99c98
 
fb99c98
     @Override
fb99c98
-- 
9baf7da
2.39.2
fb99c98