Author: cziegeler Date: Tue Jan 18 13:28:18 2005 New Revision: 125549 URL: http://svn.apache.org/viewcvs?view=rev&rev=125549 Log: Provide overriding of log level Modified: cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java
Modified: cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java?view=diff&rev=125549&p1=cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java&r1=125548&p2=cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java&r2=125549 ============================================================================== --- cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java (original) +++ cocoon/trunk/src/core/java/org/apache/cocoon/configuration/Settings.java Tue Jan 18 13:28:18 2005 @@ -15,9 +15,12 @@ */ package org.apache.cocoon.configuration; +import java.util.Iterator; +import java.util.Map; import java.util.Properties; /** + * This object holds the global configuration of Cocoon. * * @version SVN $Id$ */ @@ -29,8 +32,8 @@ protected String configuration; protected String loggingConfiguration; protected String cocoonLogger; - protected String servletLogger; - protected String logLevel; + protected String accessLogger; + protected String bootstrapLogLevel; protected String loggerClassName; protected boolean allowReload; protected String[] loadClasses; @@ -47,11 +50,33 @@ protected boolean manageExceptions; protected String formEncoding; protected String log4jConfiguration; + protected String overrideLogLevel; - public Settings(Properties properties) { - // ignore + /** + * Create a new settings object + */ + public Settings() { + // nothing to do } + /** + * Fill from a properties object + */ + public void fill(Properties props) { + if ( props != null ) { + final Iterator i = props.entrySet().iterator(); + while ( i.hasNext() ) { + final Map.Entry current = (Map.Entry)i.next(); + String key = current.getKey().toString(); + if ( key.startsWith("org.apache.cocoon.") ) { + key = key.substring("org.apache.cocoon.".length()); + if ( key.equals("override.loglevel") ) { + this.overrideLogLevel = current.getValue().toString(); + } + } + } + } + } /** * @return Returns the allowReload. @@ -224,14 +249,14 @@ /** * @return Returns the logLevel. */ - public String getLogLevel() { - return this.logLevel; + public String getBootstrapLogLevel() { + return this.bootstrapLogLevel; } /** * @param logLevel The logLevel to set. */ - public void setLogLevel(String logLevel) { - this.logLevel = logLevel; + public void setBootstrapLogLevel(String logLevel) { + this.bootstrapLogLevel = logLevel; } /** * @return Returns the manageExceptions. @@ -339,15 +364,29 @@ } /** - * @return Returns the servletLogger. + * @return Returns the accessLogger. */ - public String getServletLogger() { - return this.servletLogger; + public String getAccessLogger() { + return this.accessLogger; } /** * @param servletLogger The servletLogger to set. */ - public void setServletLogger(String servletLogger) { - this.servletLogger = servletLogger; + public void setAccessLogger(String servletLogger) { + this.accessLogger = servletLogger; + } + + /** + * @return Returns the overrideLogLevel. + */ + public String getOverrideLogLevel() { + return this.overrideLogLevel; + } + + /** + * @param overrideLogLevel The overrideLogLevel to set. + */ + public void setOverrideLogLevel(String overrideLogLevel) { + this.overrideLogLevel = overrideLogLevel; } } Modified: cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java?view=diff&rev=125549&p1=cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java&r1=125548&p2=cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java&r2=125549 ============================================================================== --- cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java (original) +++ cocoon/trunk/src/java/org/apache/cocoon/components/container/LoggingHelper.java Tue Jan 18 13:28:18 2005 @@ -59,22 +59,12 @@ protected Logger log; protected LoggerManager loggerManager; - /** - * Set up the log level and path. The default log level is - * Priority.ERROR, although it can be overwritten by the parameter - * "log-level". The log system goes to both a file and the Servlet - * container's log system. Only messages that are Priority.ERROR - * and above go to the servlet context. The log messages can - * be as restrictive (Priority.FATAL_ERROR and above) or as liberal - * (Priority.DEBUG and above) as you want that get routed to the - * file. - */ public LoggingHelper(Settings settings, LogTarget defaultTarget, Context context) { - final String logLevel = settings.get(settings.getLogLevel(), "INFO"); + final String logLevel = settings.get(settings.getBootstrapLogLevel(), "INFO"); - final String accesslogger = settings.get(settings.getServletLogger(), "cocoon"); + final String accesslogger = settings.get(settings.getAccessLogger(), "cocoon"); final Priority logPriority = Priority.getPriorityForName(logLevel); @@ -159,6 +149,10 @@ // finally remove include ((DefaultConfiguration)conf).removeChild(children[i]); } + // override log level? + if ( settings.getOverrideLogLevel() != null ) { + this.overrideLogLevel(conf.getChild("categories"), settings.getOverrideLogLevel()); + } ContainerUtil.configure(loggerManager, conf); } finally { resolver.release(source); @@ -204,6 +198,14 @@ } } + protected void overrideLogLevel(Configuration root, String value) { + Configuration[] c = root.getChildren("category"); + for(int i=0;i<c.length;i++) { + ((DefaultConfiguration)c[i]).setAttribute("log-level", value); + this.overrideLogLevel(c[i], value); + } + + } /** * @return Returns the log. */ Modified: cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java?view=diff&rev=125549&p1=cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java&r1=125548&p2=cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java&r2=125549 ============================================================================== --- cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java (original) +++ cocoon/trunk/src/java/org/apache/cocoon/servlet/SettingsHelper.java Tue Jan 18 13:28:18 2005 @@ -32,12 +32,13 @@ } public static Settings getSettings(ServletConfig config) { - final Settings s = new Settings(null); + final Settings s = new Settings(); + s.fill(System.getProperties()); // logging s.setCocoonLogger(config.getInitParameter("cocoon-logger")); - s.setServletLogger(config.getInitParameter("servlet-logger")); - s.setLogLevel(config.getInitParameter("log-level")); + s.setAccessLogger(config.getInitParameter("servlet-logger")); + s.setBootstrapLogLevel(config.getInitParameter("log-level")); s.setLoggerClassName(config.getInitParameter("logger-class")); String value = config.getInitParameter("logkit-config"); if ( value != null ) {