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 2015/06/01 09:47:07 UTC

karaf git commit: [KARAF-2698] Add -l (level) option to log:display/log:tail in order to filter messages only for a given log level (and higher)

Repository: karaf
Updated Branches:
  refs/heads/master 636cfe823 -> a7e08f0b2


[KARAF-2698] Add -l (level) option to log:display/log:tail in order to filter messages only for a given log level (and higher)

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

Branch: refs/heads/master
Commit: a7e08f0b20b0ccc48fb46ed8c2e22b99106912eb
Parents: 636cfe8
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon Jun 1 09:46:59 2015 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon Jun 1 09:46:59 2015 +0200

----------------------------------------------------------------------
 .../apache/karaf/log/command/DisplayLog.java    | 31 ++++++++++++++++++--
 .../org/apache/karaf/log/command/LogTail.java   | 19 ++++++++++--
 2 files changed, 45 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/a7e08f0b/log/src/main/java/org/apache/karaf/log/command/DisplayLog.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/command/DisplayLog.java b/log/src/main/java/org/apache/karaf/log/command/DisplayLog.java
index f502922..5b74b38 100644
--- a/log/src/main/java/org/apache/karaf/log/command/DisplayLog.java
+++ b/log/src/main/java/org/apache/karaf/log/command/DisplayLog.java
@@ -23,9 +23,11 @@ import org.apache.karaf.log.core.LogService;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
 import org.apache.karaf.shell.api.action.Option;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
 import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 import org.ops4j.pax.logging.spi.PaxLoggingEvent;
 
 /**
@@ -35,6 +37,11 @@ import org.ops4j.pax.logging.spi.PaxLoggingEvent;
 @Service
 public class DisplayLog implements Action {
 
+    public final static int ERROR_INT = 3;
+    public final static int WARN_INT  = 4;
+    public final static int INFO_INT  = 6;
+    public final static int DEBUG_INT = 7;
+
     @Option(name = "-n", aliases = {}, description="Number of entries to display", required = false, multiValued = false)
     int entries;
 
@@ -44,6 +51,10 @@ public class DisplayLog implements Action {
     @Option(name = "--no-color", description="Disable syntax coloring of log events", required = false, multiValued = false)
     boolean noColor;
 
+    @Option(name = "-l", aliases = { "--level" }, description = "The miniml log level to display", required = false, multiValued = false)
+    @Completion(value = StringsCompleter.class, values = { "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "DEFAULT" })
+    String level;
+
     @Argument(index = 0, name = "logger", description = "The name of the logger. This can be ROOT, ALL, or the name of a logger specified in the org.ops4j.pax.logger.cfg file.", required = false, multiValued = false)
     String logger;
 
@@ -55,19 +66,33 @@ public class DisplayLog implements Action {
 
     @Override
     public Object execute() throws Exception {
-        
+
+        int minLevel = Integer.MAX_VALUE;
+        if (level != null) {
+            switch (level.toLowerCase()) {
+            case "debug": minLevel = DEBUG_INT; break;
+            case "info":  minLevel = INFO_INT; break;
+            case "warn":  minLevel = WARN_INT; break;
+            case "error": minLevel = ERROR_INT; break;
+            }
+        }
+
+
         final PrintStream out = System.out;
 
         Iterable<PaxLoggingEvent> le = logService.getEvents(entries == 0 ? Integer.MAX_VALUE : entries);
         for (PaxLoggingEvent event : le) {
-            printEvent(out, event);
+            int sl = event.getLevel().getSyslogEquivalent();
+            if (sl <= minLevel) {
+                printEvent(out, event);
+            }
         }
         out.println();
         return null;
     }
         
     protected boolean checkIfFromRequestedLog(PaxLoggingEvent event) {
-    	return (event.getLoggerName().lastIndexOf(logger)>=0) ? true : false;
+    	return event.getLoggerName().contains(logger);
     }
 
     protected void printEvent(final PrintStream out, PaxLoggingEvent event) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/a7e08f0b/log/src/main/java/org/apache/karaf/log/command/LogTail.java
----------------------------------------------------------------------
diff --git a/log/src/main/java/org/apache/karaf/log/command/LogTail.java b/log/src/main/java/org/apache/karaf/log/command/LogTail.java
index 66a401b..1ee2918 100644
--- a/log/src/main/java/org/apache/karaf/log/command/LogTail.java
+++ b/log/src/main/java/org/apache/karaf/log/command/LogTail.java
@@ -95,10 +95,22 @@ public class LogTail extends DisplayLog {
         boolean doDisplay = true;
 
         public void run() {
+            int minLevel = Integer.MIN_VALUE;
+            if (level != null) {
+                switch (level.toLowerCase()) {
+                case "debug": minLevel = DEBUG_INT; break;
+                case "info":  minLevel = INFO_INT; break;
+                case "warn":  minLevel = WARN_INT; break;
+                case "error": minLevel = ERROR_INT; break;
+                }
+            }
             Iterable<PaxLoggingEvent> le = logService.getEvents(entries == 0 ? Integer.MAX_VALUE : entries);
             for (PaxLoggingEvent event : le) {
                 if (event != null) {
-                    printEvent(out, event);
+                    int sl = event.getLevel().getSyslogEquivalent();
+                    if (sl <= minLevel) {
+                        printEvent(out, event);
+                    }
                 }
             }
             // Tail
@@ -114,7 +126,10 @@ public class LogTail extends DisplayLog {
                 while (doDisplay) {
                     PaxLoggingEvent event = queue.take();
                     if (event != null) {
-                        printEvent(out, event);
+                        int sl = event.getLevel().getSyslogEquivalent();
+                        if (sl <= minLevel) {
+                            printEvent(out, event);
+                        }
                     }
                 }
             } catch (InterruptedException e) {