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

Reply via email to