You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ch...@apache.org on 2013/11/29 16:29:45 UTC

svn commit: r1546580 - in /sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal: LogConfigManager.java LogWriter.java LogbackManager.java SlingLogPanel.java

Author: chetanm
Date: Fri Nov 29 15:29:45 2013
New Revision: 1546580

URL: http://svn.apache.org/r1546580
Log:
SLING-3258 - [regression] Sling log support webconsole no longer links to logger configurations

Adding support for links to logger configs

Modified:
    sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfigManager.java
    sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogWriter.java
    sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogbackManager.java
    sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java

Modified: sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfigManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfigManager.java?rev=1546580&r1=1546579&r2=1546580&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfigManager.java (original)
+++ sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogConfigManager.java Fri Nov 29 15:29:45 2013
@@ -29,14 +29,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.sling.commons.log.logback.internal.config.ConfigAdminSupport;
-import org.apache.sling.commons.log.logback.internal.config.ConfigurationException;
-import org.apache.sling.commons.log.logback.internal.util.LoggerSpecificEncoder;
-import org.apache.sling.commons.log.logback.internal.util.Util;
-import org.osgi.framework.BundleContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
@@ -47,6 +39,13 @@ import ch.qos.logback.core.Layout;
 import ch.qos.logback.core.OutputStreamAppender;
 import ch.qos.logback.core.joran.action.ActionConst;
 import ch.qos.logback.core.util.ContextUtil;
+import org.apache.sling.commons.log.logback.internal.config.ConfigAdminSupport;
+import org.apache.sling.commons.log.logback.internal.config.ConfigurationException;
+import org.apache.sling.commons.log.logback.internal.util.LoggerSpecificEncoder;
+import org.apache.sling.commons.log.logback.internal.util.Util;
+import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class LogConfigManager implements LogbackResetListener, LogConfig.LogWriterProvider {
 
@@ -613,7 +612,7 @@ public class LogConfigManager implements
         return getDefaultConfig().createLayout();
     }
 
-    private Iterable<LogConfig> getLogConfigs() {
+    Iterable<LogConfig> getLogConfigs() {
         return configByPid.values();
     }
 

Modified: sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogWriter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogWriter.java?rev=1546580&r1=1546579&r2=1546580&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogWriter.java (original)
+++ sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogWriter.java Fri Nov 29 15:29:45 2013
@@ -30,7 +30,6 @@ import ch.qos.logback.core.encoder.Encod
 import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
 import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;
 import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
-
 import org.apache.sling.commons.log.logback.internal.util.SlingRollingFileAppender;
 
 /**
@@ -100,6 +99,10 @@ public class LogWriter {
         return configurationPID;
     }
 
+    public String getImplicitConfigPID(){
+        return LogConfigManager.PID;
+    }
+
     public String getFileName() {
         return fileName;
     }

Modified: sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogbackManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogbackManager.java?rev=1546580&r1=1546579&r2=1546580&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogbackManager.java (original)
+++ sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/LogbackManager.java Fri Nov 29 15:29:45 2013
@@ -445,6 +445,12 @@ public class LogbackManager extends Logg
                 }
             }
         }
+
+        for (LogConfig lc : logConfigManager.getLogConfigs()) {
+            for (String category : lc.getCategories()) {
+                ctx.loggerNameToConfigMapping.put(category, lc);
+            }
+        }
         return ctx;
     }
 
@@ -458,6 +464,8 @@ public class LogbackManager extends Logg
          */
         final List<Logger> loggerInfos = new ArrayList<Logger>();
 
+        final Map<String,LogConfig> loggerNameToConfigMapping = new HashMap<String, LogConfig>();
+
         final Map<String, Appender<ILoggingEvent>> appenders = new HashMap<String, Appender<ILoggingEvent>>();
 
         final Map<Appender<ILoggingEvent>, AppenderInfo> dynamicAppenders =
@@ -505,6 +513,10 @@ public class LogbackManager extends Logg
         Map<String,Appender<ILoggingEvent>> getAppenderMap(){
             return Collections.unmodifiableMap(appenders);
         }
+
+        LogConfig getConfig(String loggerName) {
+            return loggerNameToConfigMapping.get(loggerName);
+        }
     }
 
     private void registerWebConsoleSupport(BundleContext context) {

Modified: sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java?rev=1546580&r1=1546579&r2=1546580&view=diff
==============================================================================
--- sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java (original)
+++ sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal/SlingLogPanel.java Fri Nov 29 15:29:45 2013
@@ -92,7 +92,7 @@ public class SlingLogPanel extends HttpS
 
         final LoggerStateContext ctx = logbackManager.determineLoggerState();
         appendLoggerStatus(pw, ctx);
-        appendLoggerData(pw, ctx);
+        appendLoggerData(pw, consoleAppRoot, ctx);
         addAppenderData(pw, consoleAppRoot, ctx);
         appendTurboFilterData(pw, consoleAppRoot,ctx);
         appendLogbackMainConfig(pw);
@@ -110,11 +110,11 @@ public class SlingLogPanel extends HttpS
 
     private void appendLoggerStatus(PrintWriter pw, LoggerStateContext ctx) {
         pw.printf(
-            "<p class='statline'>Log Service Stats: %d categories, %d appenders(s), %d Dynamic appenders(s)</p>%n",
+            "<p class='statline'>Log Service Stats: %d categories, %d appender, %d Dynamic appenders</p>%n",
             ctx.getNumberOfLoggers(), ctx.getNumOfAppenders(), ctx.getNumOfDynamicAppenders());
     }
 
-    private void appendLoggerData(PrintWriter pw, LoggerStateContext ctx) {
+    private void appendLoggerData(PrintWriter pw, String consoleAppRoot, LoggerStateContext ctx) {
         pw.println("<div class='table'>");
 
         pw.println("<div class='ui-widget-header ui-corner-top buttonGroup'>Logger</div>");
@@ -127,7 +127,7 @@ public class SlingLogPanel extends HttpS
         pw.println("<th>Additivity</th>");
         pw.println("<th>Name</th>");
         pw.println("<th>Appender</th>");
-        // pw.println("<th>" + cfgColTitle + "</th>");
+        pw.println("<th>" + getConfigColTitle(consoleAppRoot) + "</th>");
         pw.println("</tr>");
         pw.println("</thead>");
         pw.println("<tbody class='ui-widget-content'>");
@@ -144,7 +144,21 @@ public class SlingLogPanel extends HttpS
             while (itr.hasNext()) {
                 Appender<ILoggingEvent> a = itr.next();
                 pw.print("<li>");
-                pw.println(getName(a));
+                pw.print(getName(a));
+                pw.print("</li>");
+            }
+            pw.println("</ul>");
+            pw.println("</td>");
+
+            pw.println("<td>");
+            pw.println("<ul>");
+            Iterator<Appender<ILoggingEvent>> itr2 = logger.iteratorForAppenders();
+            while (itr2.hasNext()) {
+                Appender<ILoggingEvent> a = itr2.next();
+                pw.print("<li>");
+                if(a instanceof SlingRollingFileAppender){
+                    pw.print(formatPidForLogger(consoleAppRoot, ctx, logger.getName()));
+                }
                 pw.print("</li>");
             }
             pw.println("</ul>");
@@ -387,15 +401,28 @@ public class SlingLogPanel extends HttpS
         return String.format("%s (%s)", appender.getName(), appender.getClass().getName());
     }
 
+    private static String formatPidForLogger(final String consoleAppRoot,
+                                             final LoggerStateContext ctx, final String loggerName) {
+        //Each logger configured via OSGi config would have a
+        //backing LogConfig. Extract PID from that
+        final LogConfig lc = ctx.getConfig(loggerName);
+        if (lc != null) {
+            String pid = lc.getConfigPid();
+            return createUrl(consoleAppRoot, "configMgr", pid);
+        }
+
+        //Should not happen
+        return null;
+    }
+
     private static String formatPid(final String consoleAppRoot, final Appender<ILoggingEvent> appender,
             final LoggerStateContext ctx) {
         if (appender instanceof SlingRollingFileAppender) {
             final LogWriter lw = ((SlingRollingFileAppender) appender).getLogWriter();
+            String pid = lw.getConfigurationPID();
             if (lw.isImplicit()) {
-                return "[implicit]";
+                pid = lw.getImplicitConfigPID();
             }
-
-            final String pid = lw.getConfigurationPID();
             return createUrl(consoleAppRoot, "configMgr", pid);
         } else if (ctx.isDynamicAppender(appender)) {
             final AppenderInfo ai = ctx.dynamicAppenders.get(appender);