You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2016/12/06 08:08:33 UTC

[2/2] karaf git commit: [KARAF-4879] The log:get command should display all loggers by default [KARAF-4828] Support OFF log level in log:set console command

[KARAF-4879] The log:get command should display all loggers by default
[KARAF-4828] Support OFF log level in log:set console command

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/1ff5aa1a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/1ff5aa1a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/1ff5aa1a

Branch: refs/heads/master
Commit: 1ff5aa1aa008538e0de18328c7e032a2683833ec
Parents: b0c227c
Author: Guillaume Nodet <gn...@apache.org>
Authored: Tue Dec 6 09:08:17 2016 +0100
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Tue Dec 6 09:08:17 2016 +0100

----------------------------------------------------------------------
 log/pom.xml                                     |  1 +
 .../apache/karaf/log/command/GetLogLevel.java   | 26 ++++---
 .../apache/karaf/log/command/SetLogLevel.java   |  2 +-
 .../java/org/apache/karaf/log/core/Level.java   |  1 +
 .../log/core/internal/LogServiceInternal.java   | 11 ---
 .../log/core/internal/LogServiceLog4j2Impl.java | 77 +++++++++-----------
 6 files changed, 52 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/1ff5aa1a/log/pom.xml
----------------------------------------------------------------------
diff --git a/log/pom.xml b/log/pom.xml
index e4e10f5..2cb4adf 100644
--- a/log/pom.xml
+++ b/log/pom.xml
@@ -109,6 +109,7 @@
                             org.apache.karaf.log.core.internal,
                             org.apache.karaf.log.core.internal.layout,
                             org.apache.karaf.log.core.internal.osgi,
+                            org.apache.felix.utils.collections
                         </Private-Package>
                     </instructions>
                 </configuration>

http://git-wip-us.apache.org/repos/asf/karaf/blob/1ff5aa1a/log/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/command/GetLogLevel.java b/log/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
index 83e5003..f9b0cf7 100644
--- a/log/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
+++ b/log/src/main/java/org/apache/karaf/log/command/GetLogLevel.java
@@ -34,7 +34,7 @@ import org.apache.karaf.shell.support.table.ShellTable;
 @Service
 public class GetLogLevel implements Action {
 
-    @Argument(index = 0, name = "logger", description = "The name of the logger, ALL or ROOT (default)", required = false, multiValued = false)
+    @Argument(index = 0, name = "logger", description = "The name of the logger or ALL (default)", required = false, multiValued = false)
     String logger;
 
     @Option(name = "--no-format", description = "Disable table rendered output", required = false, multiValued = false)
@@ -45,18 +45,20 @@ public class GetLogLevel implements Action {
 
     @Override
     public Object execute() throws Exception {
-        Map<String, String> loggers = logService.getLevel(logger);
-
-        ShellTable table = new ShellTable();
-        table.column("Logger");
-        table.column("Level");
-
-        for (String logger : loggers.keySet()) {
-            table.addRow().addContent(logger, loggers.get(logger));
+        if (logger == null) {
+            Map<String, String> loggers = logService.getLevel("ALL");
+            ShellTable table = new ShellTable();
+            table.column("Logger");
+            table.column("Level");
+            loggers.forEach((n, l) -> table.addRow().addContent(n, l));
+            table.print(System.out, !noFormat);
+        }
+        else
+        {
+            Map<String, String> loggers = logService.getLevel( logger );
+            String level = loggers.get( logger );
+            System.out.println( level );
         }
-
-        table.print(System.out, !noFormat);
-
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/1ff5aa1a/log/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/command/SetLogLevel.java b/log/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
index b1145b4..3d7393a 100644
--- a/log/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
+++ b/log/src/main/java/org/apache/karaf/log/command/SetLogLevel.java
@@ -34,7 +34,7 @@ import org.apache.karaf.shell.support.completers.StringsCompleter;
 public class SetLogLevel implements Action {
     
     @Argument(index = 0, name = "level", description = "The log level to set (TRACE, DEBUG, INFO, WARN, ERROR) or DEFAULT to unset", required = true, multiValued = false)
-    @Completion(value = StringsCompleter.class, values = { "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "DEFAULT" })
+    @Completion(value = StringsCompleter.class, values = { "OFF", "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "DEFAULT" })
     String level;
 
     @Argument(index = 1, name = "logger", description = "Logger name or ROOT (default)", required = false, multiValued = false)

http://git-wip-us.apache.org/repos/asf/karaf/blob/1ff5aa1a/log/src/main/java/org/apache/karaf/log/core/Level.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/core/Level.java b/log/src/main/java/org/apache/karaf/log/core/Level.java
index a83396f..fcde028 100644
--- a/log/src/main/java/org/apache/karaf/log/core/Level.java
+++ b/log/src/main/java/org/apache/karaf/log/core/Level.java
@@ -27,6 +27,7 @@ public enum Level {
     INFO,
     WARN,
     ERROR,
+    OFF,
     DEFAULT;
     
     /**

http://git-wip-us.apache.org/repos/asf/karaf/blob/1ff5aa1a/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceInternal.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceInternal.java b/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceInternal.java
index d7e06b4..184278e 100644
--- a/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceInternal.java
+++ b/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceInternal.java
@@ -16,18 +16,7 @@
  */
 package org.apache.karaf.log.core.internal;
 
-import java.io.IOException;
-import java.util.Dictionary;
-import java.util.Enumeration;
 import java.util.Map;
-import java.util.TreeMap;
-
-import org.apache.karaf.log.core.Level;
-import org.apache.karaf.log.core.LogService;
-import org.ops4j.pax.logging.spi.PaxAppender;
-import org.ops4j.pax.logging.spi.PaxLoggingEvent;
-import org.osgi.service.cm.Configuration;
-import org.osgi.service.cm.ConfigurationAdmin;
 
 public interface LogServiceInternal {
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/1ff5aa1a/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceLog4j2Impl.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceLog4j2Impl.java b/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceLog4j2Impl.java
index 229d5ce..555e8ec 100644
--- a/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceLog4j2Impl.java
+++ b/log/src/main/java/org/apache/karaf/log/core/internal/LogServiceLog4j2Impl.java
@@ -21,21 +21,23 @@ import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
+import org.apache.felix.utils.collections.DictionaryAsMap;
 import org.apache.karaf.log.core.Level;
 
 public class LogServiceLog4j2Impl implements LogServiceInternal {
 
     static final String ROOT_LOGGER_LEVEL = "log4j2.rootLogger.level";
-    static final String LOGGERS = "log4j2.loggers";
     static final String LOGGER_PREFIX = "log4j2.logger.";
     static final String NAME_SUFFIX = ".name";
     static final String LEVEL_SUFFIX = ".level";
 
-    private final Dictionary<String, Object> config;
+    private final Map<String, Object> config;
 
     public LogServiceLog4j2Impl(Dictionary<String, Object> config) {
-        this.config = config;
+        this.config = new DictionaryAsMap<>(config);
     }
 
     public Map<String, String> getLevel(String logger) {
@@ -47,19 +49,21 @@ public class LogServiceLog4j2Impl implements LogServiceInternal {
             return loggers;
         }
 
-        String ids = (String) config.get(LOGGERS);
-        if (ids != null) {
-            for (String id : ids.split(",")) {
-                id = id.trim();
-                if (!id.equalsIgnoreCase(ROOT_LOGGER)) {
-                    String name = (String) config.get(name(id));
-                    String level = (String) config.get(level(id));
-                    if (name != null && level != null) {
-                        loggers.put(name, level);
-                    }
-                }
+        Map<String, String> names = new HashMap<>();
+        Map<String, String> levels = new HashMap<>();
+        for (String key : config.keySet()) {
+            Matcher matcher = Pattern.compile("log4j2\\.logger\\.([a-zA-Z_]+)\\.name").matcher(key);
+            if (matcher.matches()) {
+                names.put(matcher.group(1), config.get(key).toString());
+            }
+            matcher = Pattern.compile("log4j2\\.logger\\.([a-zA-Z_]+)\\.level").matcher(key);
+            if (matcher.matches()) {
+                levels.put(matcher.group(1), config.get(key).toString());
             }
         }
+        for (Map.Entry<String, String> e : names.entrySet()) {
+            loggers.put(e.getValue(), levels.get(e.getKey()));
+        }
         if (ALL_LOGGER.equalsIgnoreCase(logger)) {
             return loggers;
         }
@@ -84,39 +88,28 @@ public class LogServiceLog4j2Impl implements LogServiceInternal {
         if (logger == null || LogServiceInternal.ROOT_LOGGER.equalsIgnoreCase(logger)) {
             config.put(ROOT_LOGGER_LEVEL, level);
         } else {
-            Map<String, String> names = new HashMap<>();
-            String ids = (String) config.get(LOGGERS);
-            if (ids != null) {
-                for (String id : ids.split(",")) {
-                    id = id.trim();
-                    if (!id.equalsIgnoreCase(ROOT_LOGGER)) {
-                        String name = (String) config.get(name(id));
-                        if (name != null) {
-                            names.put(name, id);
-                        }
+            String loggerKey = null;
+            for (String key : config.keySet()) {
+                Matcher matcher = Pattern.compile("\\Q" + LOGGER_PREFIX + "\\E([a-zA-Z_]+)\\Q" + NAME_SUFFIX + "\\E").matcher(key);
+                if (matcher.matches()) {
+                    String name = config.get(key).toString();
+                    if (name.matches(logger)) {
+                        loggerKey = matcher.group(1);
+                        break;
                     }
                 }
             }
 
-            if (Level.isDefault(level)) {
-                if (names.containsKey(logger)) {
-                    config.remove(level(names.get(logger)));
-                }
-            }
-            else {
-                if (names.containsKey(logger)) {
-                    config.put(level(names.get(logger)), level);
-                }
-                else {
-                    String id = logger.toLowerCase().replace('.', '_').replace('$', '_');
-                    config.put(name(id), logger);
-                    if (ids != null) {
-                        config.put(LOGGERS, ids + "," + id);
-                    } else {
-                        config.put(LOGGERS, id);
-                    }
-                    config.put(level(id), level);
+            if (loggerKey != null) {
+                if (Level.isDefault(level)) {
+                    config.remove(level(loggerKey));
+                } else {
+                    config.put(level(loggerKey), level);
                 }
+            } else {
+                loggerKey = logger.replace('.', '_').toLowerCase();
+                config.put(name(loggerKey), logger);
+                config.put(level(loggerKey), level);
             }
         }
     }