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);