Return-Path: X-Original-To: apmail-sling-commits-archive@www.apache.org Delivered-To: apmail-sling-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7946C10C64 for ; Mon, 10 Feb 2014 12:44:00 +0000 (UTC) Received: (qmail 55685 invoked by uid 500); 10 Feb 2014 12:43:59 -0000 Delivered-To: apmail-sling-commits-archive@sling.apache.org Received: (qmail 55639 invoked by uid 500); 10 Feb 2014 12:43:58 -0000 Mailing-List: contact commits-help@sling.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@sling.apache.org Delivered-To: mailing list commits@sling.apache.org Received: (qmail 55632 invoked by uid 99); 10 Feb 2014 12:43:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Feb 2014 12:43:57 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Feb 2014 12:43:54 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 6153D23889E2; Mon, 10 Feb 2014 12:43:33 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1566597 - in /sling/trunk/bundles/commons/log/src/main/java/org/apache/sling/commons/log/logback/internal: LogConfigManager.java LogbackManager.java Date: Mon, 10 Feb 2014 12:43:33 -0000 To: commits@sling.apache.org From: chetanm@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140210124333.6153D23889E2@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: chetanm Date: Mon Feb 10 12:43:32 2014 New Revision: 1566597 URL: http://svn.apache.org/r1566597 Log: SLING-3045 - [logback]Warning logs logged for 'No appenders present in context [sling] for logger' Instead of removing the console logger asscoaited with root logger by default we check now if root logger has any appender associated with it or not. if not then console logger is not removed Also moved this logic out as a separate listener and ensure that this listener is invoked at the end of config cycle. 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/LogbackManager.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=1566597&r1=1566596&r2=1566597&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 Mon Feb 10 12:43:32 2014 @@ -81,7 +81,7 @@ public class LogConfigManager implements public static final String FACTORY_PID_CONFIGS = PID + ".factory.config"; - private static final String DEFAULT_CONSOLE_APPENDER_NAME = "org.apache.sling.commons.log.CONSOLE"; + public static final String DEFAULT_CONSOLE_APPENDER_NAME = "org.apache.sling.commons.log.CONSOLE"; private final LoggerContext loggerContext; @@ -293,10 +293,6 @@ public class LogConfigManager implements } } } - - // Remove the default console appender that we attached at start of - // reset - context.getLogger(Logger.ROOT_LOGGER_NAME).detachAppender(DEFAULT_CONSOLE_APPENDER_NAME); } 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=1566597&r1=1566596&r2=1566597&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 Mon Feb 10 12:43:32 2014 @@ -145,6 +145,7 @@ public class LogbackManager extends Logg resetListeners.add(configSourceTracker); resetListeners.add(filterTracker); resetListeners.add(turboFilterTracker); + resetListeners.add(new RootLoggerListener()); //Should be invoked at last //Record trackers for shutdown later serviceTrackers.add(appenderTracker); @@ -461,7 +462,7 @@ public class LogbackManager extends Logg context.setPackagingDataEnabled(logConfigManager.isPackagingDataEnabled()); // Attach a console appender to handle logging untill we configure - // one. This would be removed in LogConfigManager.reset + // one. This would be removed in RootLoggerListener.reset final Logger rootLogger = getLoggerContext().getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME); rootLogger.setLevel(Level.INFO); rootLogger.addAppender(logConfigManager.getDefaultAppender()); @@ -486,6 +487,30 @@ public class LogbackManager extends Logg } + private class RootLoggerListener implements LogbackResetListener { + + @Override + public void onResetStart(LoggerContext context) { + + } + + @Override + public void onResetComplete(LoggerContext context) { + // Remove the default console appender that we attached at start of + // reset + ch.qos.logback.classic.Logger root = context.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME); + Iterator> appenderItr = root.iteratorForAppenders(); + + //Root logger has at least 1 appender associated with it. Remove the one added by us + if (appenderItr.hasNext()) { + root.detachAppender(LogConfigManager.DEFAULT_CONSOLE_APPENDER_NAME); + } else { + addInfo("No appender was found to be associated with root logger. Registering " + + "a Console based logger"); + } + } + } + // ~--------------------------------Configurator Base private class SlingConfigurator extends JoranConfigurator {