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