diff -w -c -r -N src/java/org/twdata/struts/CocoonHandler.java src.new/java/org/twdata/struts/CocoonHandler.java
*** src/java/org/twdata/struts/CocoonHandler.java	2003-06-02 11:37:38.000000000 -0400
--- src.new/java/org/twdata/struts/CocoonHandler.java	2003-11-25 15:24:02.000000000 -0500
***************
*** 78,85 ****
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
! import org.apache.avalon.excalibur.logger.DefaultLogKitManager;
! import org.apache.avalon.excalibur.logger.LogKitManager;
  import org.apache.avalon.framework.activity.Initializable;
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.configuration.Configuration;
--- 78,85 ----
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
! import org.apache.avalon.excalibur.logger.LogKitLoggerManager;
! import org.apache.avalon.excalibur.logger.LoggerManager;
  import org.apache.avalon.framework.activity.Initializable;
  import org.apache.avalon.framework.component.ComponentManager;
  import org.apache.avalon.framework.configuration.Configuration;
***************
*** 88,93 ****
--- 88,94 ----
  import org.apache.avalon.framework.context.DefaultContext;
  import org.apache.avalon.framework.logger.LogEnabled;
  import org.apache.avalon.framework.logger.LogKitLogger;
+ import org.apache.avalon.framework.logger.Logger;
  import org.apache.cocoon.Cocoon;
  import org.apache.cocoon.ConnectionResetException;
  import org.apache.cocoon.Constants;
***************
*** 108,114 ****
  import org.apache.excalibur.instrument.manager.DefaultInstrumentManager;
  import org.apache.log.ContextMap;
  import org.apache.log.Hierarchy;
- import org.apache.log.Logger;
  import org.apache.log.Priority;
  import org.apache.log.output.ServletOutputLogTarget;
  
--- 109,114 ----
***************
*** 138,144 ****
      static final float HOUR   = 60 * MINUTE;
  
      protected Logger log;
!     protected LogKitManager logKitManager;
  
      /**
       * The time the cocoon instance was created
--- 138,144 ----
      static final float HOUR   = 60 * MINUTE;
  
      protected Logger log;
!     protected LoggerManager logManager;
  
      /**
       * The time the cocoon instance was created
***************
*** 859,874 ****
  
          final ServletOutputLogTarget servTarget = new ServletOutputLogTarget(this.servletContext);
  
          final CocoonLogFormatter formatter = new CocoonLogFormatter();
          formatter.setFormat( "%7.7{priority} %{time}   [%8.8{category}] " +
                               "(%{uri}) %{thread}/%{class:short}: %{message}\\n%{throwable}" );
  
          servTarget.setFormatter(formatter);
          Hierarchy.getDefaultHierarchy().setDefaultLogTarget(servTarget);
          Hierarchy.getDefaultHierarchy().setDefaultPriority(logPriority);
!         final Logger logger = Hierarchy.getDefaultHierarchy().getLoggerFor("");
!         final DefaultLogKitManager logKitManager = new DefaultLogKitManager(Hierarchy.getDefaultHierarchy());
!         logKitManager.setLogger(logger);
          final DefaultContext subcontext = new DefaultContext(this.appContext);
          subcontext.put("servlet-context", this.servletContext);
          if (this.servletContextPath == null) {
--- 859,876 ----
  
  	final ServletOutputLogTarget servTarget = new ServletOutputLogTarget(this.servletContext);
  
+ 	/*
  	final CocoonLogFormatter formatter = new CocoonLogFormatter();
  	formatter.setFormat("%7.7{priority} %{time}   [%8.8{category}] " +
  			    "(%{uri}) %{thread}/%{class:short}: %{message}\\n%{throwable}");
  
  	servTarget.setFormatter(formatter);
+ 	*/
  	Hierarchy.getDefaultHierarchy().setDefaultLogTarget(servTarget);
  	Hierarchy.getDefaultHierarchy().setDefaultPriority(logPriority);
! 	final Logger logger = new LogKitLogger(Hierarchy.getDefaultHierarchy().getLoggerFor(""));
! 	final LogKitLoggerManager logKitManager = new LogKitLoggerManager(Hierarchy.getDefaultHierarchy());
! 	logKitManager.enableLogging(logger);
  	final DefaultContext subcontext = new DefaultContext(this.appContext);
  	subcontext.put("servlet-context", this.servletContext);
  	if (this.servletContextPath == null) {
***************
*** 884,890 ****
  
          try {
              logKitManager.contextualize(subcontext);
!             this.logKitManager = logKitManager;
  
              //Configure the logkit management
              String logkitConfig = (String)props.get("logkit-config");
--- 886,892 ----
  
  	try {
  	    logKitManager.contextualize(subcontext);
! 	    this.logManager = logKitManager;
  
  	    //Configure the logkit management
  	    String logkitConfig = (String)props.get("logkit-config");
***************
*** 898,910 ****
              final Configuration conf = builder.build(is);
              logKitManager.configure(conf);
          } catch (Exception e) {
!             Hierarchy.getDefaultHierarchy().log("Could not set up Cocoon Logger, will use screen instead", e);
          }
  
          if (accesslogger != null) {
!             this.log = logKitManager.getLogger(accesslogger);
          } else {
!             this.log = logKitManager.getLogger("cocoon");
          }
  
      }
--- 900,920 ----
  	    final Configuration conf = builder.build(is);
  	    logKitManager.configure(conf);
  	} catch (Exception e) {
! 	    /*
! 	      now deprecated and the stupid documentation says to use the
! 	      ErrorHandler without explaining how to *get* and ErrorHandler!
! 
! 	    Hierarchy.getDefaultHierarchy().log(
! 		"Could not set up Cocoon Logger, will use screen instead", e);
! 	    */
! 	    Hierarchy.getDefaultHierarchy().getLoggerFor("").error(
! 		"Could not set up Cocoon Logger, will use screen instead", e);
  	}
  
  	if (accesslogger != null) {
! 	    this.log = logKitManager.getLoggerForCategory(accesslogger);
  	} else {
! 	    this.log = logKitManager.getLoggerForCategory("cocoon");
  	}
  
      }
***************
*** 1133,1139 ****
                  if (uri.charAt(0) == '/') {
                      uri = uri.substring(1);
                  }
!                 env = getEnvironment(URLDecoder.decode(uri), request, res);
              } catch (Exception e) {
                  if (log.isErrorEnabled()) {
                      log.error("Problem with Cocoon servlet", e);
--- 1143,1151 ----
  		if (uri.charAt(0) == '/') {
  		    uri = uri.substring(1);
  		}
! 		env = getEnvironment(URLDecoder.decode(uri, "iso-8859-1"),
! 				     request,
! 				     res);
  	    } catch (Exception e) {
  		if (log.isErrorEnabled()) {
  		    log.error("Problem with Cocoon servlet", e);
***************
*** 1325,1331 ****
                                    (HttpContext) this.appContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT),
                                    this.containerEncoding,
                                    formEncoding);
!         env.enableLogging(new LogKitLogger(this.log));
          return env;
      }
  
--- 1337,1343 ----
  				  (HttpContext) this.appContext.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT),
  				  this.containerEncoding,
  				  formEncoding);
! 	env.enableLogging(this.log);
  	return env;
      }
  
***************
*** 1353,1359 ****
                  parentComponentManager = (ComponentManager) pcmc.newInstance(new Object[]{initParam});
  
                  if (parentComponentManager instanceof LogEnabled) {
!                     ((LogEnabled) parentComponentManager).enableLogging(new LogKitLogger(log));
                  }
                  if (parentComponentManager instanceof Contextualizable) {
                      ((Contextualizable) parentComponentManager).contextualize(this.appContext);
--- 1365,1371 ----
  		parentComponentManager = (ComponentManager) pcmc.newInstance(new Object[]{initParam});
  
  		if (parentComponentManager instanceof LogEnabled) {
! 		    ((LogEnabled) parentComponentManager).enableLogging(log);
  		}
  		if (parentComponentManager instanceof Contextualizable) {
  		    ((Contextualizable) parentComponentManager).contextualize(this.appContext);
***************
*** 1398,1410 ****
              Cocoon c = (Cocoon) ClassUtils.newInstance("org.apache.cocoon.Cocoon");
              final String rootlogger = (String)props.get("cocoon-logger");
              if (rootlogger != null) {
!                 c.enableLogging(new LogKitLogger(this.logKitManager.getLogger(rootlogger)));
              } else {
!                 c.enableLogging(new LogKitLogger(log));
              }
              c.contextualize(this.appContext);
              c.compose(getParentComponentManager());
!             c.setLogKitManager(this.logKitManager);
              if (this.enableInstrumentation) {
                  c.setInstrumentManager(getInstrumentManager());
              }
--- 1410,1422 ----
  	    Cocoon c = (Cocoon) ClassUtils.newInstance("org.apache.cocoon.Cocoon");
  	    final String rootlogger = (String)props.get("cocoon-logger");
  	    if (rootlogger != null) {
! 		c.enableLogging(this.logManager.getLoggerForCategory(rootlogger));
  	    } else {
! 		c.enableLogging(log);
  	    }
  	    c.contextualize(this.appContext);
  	    c.compose(getParentComponentManager());
! 	    c.setLoggerManager(this.logManager);
  	    if (this.enableInstrumentation) {
  		c.setInstrumentManager(getInstrumentManager());
  	    }
***************
*** 1452,1463 ****
          final Configuration conf = builder.build(is);
  
          // Get the logger for the instrument manager
!         Logger imLogger =
!             this.logKitManager.getLogger((String)props.get( "logger" ));
  
          // Set up the Instrument Manager
          DefaultInstrumentManager instrumentManager = new DefaultInstrumentManager();
!         instrumentManager.enableLogging(new LogKitLogger(imLogger));
          instrumentManager.configure(conf);
          instrumentManager.initialize();
  
--- 1464,1474 ----
  	final Configuration conf = builder.build(is);
  
  	// Get the logger for the instrument manager
! 	Logger imLogger = this.logManager.getLoggerForCategory((String)props.get( "logger" ));
  
  	// Set up the Instrument Manager
  	DefaultInstrumentManager instrumentManager = new DefaultInstrumentManager();
! 	instrumentManager.enableLogging(imLogger);
  	instrumentManager.configure(conf);
  	instrumentManager.initialize();
  
diff -w -c -r -N src/java/org/twdata/struts/CocoonRequestProcessor.java src.new/java/org/twdata/struts/CocoonRequestProcessor.java
*** src/java/org/twdata/struts/CocoonRequestProcessor.java	2003-05-30 15:23:50.000000000 -0400
--- src.new/java/org/twdata/struts/CocoonRequestProcessor.java	2003-11-24 18:13:45.000000000 -0500
***************
*** 120,125 ****
--- 120,134 ----
  
      }
  
+     public void destroy()
+     {
+ 	//clean up the handler
+ 	if (cHandler != null) {
+ 	    cHandler.destroy();
+ 	    cHandler = null;
+ 	}
+     }
+ 
      /**
       *  Looks for the Cocoon plugin and its properties
       *
